zoukankan      html  css  js  c++  java
  • 基础

    提升

    JS代码运行的两个阶段:

    预解析:把所有 变量声明 和 函数定义 提前,注意变量的赋值不会提前

    执行: 从上到下执行

    闭包

    通俗的讲,函数去访问其他函数的局部变量

        var aContaint = [];
        for (var i= 0,l=10;i<l;i++) {
            aContaint[i] = (function (key) {
                return function (){
                    console.log(key);
                }
            })(i);
        }
    

      

    跨域

    相关文档:http://www.cnblogs.com/rainman/archive/2011/02/20/1959325.html

    由于JavaScript同源策略的限制,

    出于安全方面的考虑,JavaScript不允许跨域通信

    并且,

    同一域名下的不同端口或者不同协议下也是不允许通信的,这种情况下,前台无法控制

    在跨域问题上,域仅仅是通过“URL的首部”来识别,不会尝试解析域名

    解决方案

    方案1.动态创建script标签

    原理:在页面中引用其他域的JS文件是允许的,并执行引入的JS文件中的function

    定义好方法,让跨域的服务器文件返回该方法的调用;

    	function funCallback(array){
    
    	}
    

      

        var url = "http://www.baidu.com/info.php?a=1&b=2&_jsonp=funCallback";
        var oScript = document.createElement("script");
        oScript.src = url;
        document.body.appendChild(oScript);
    

    但是,产生了一个问题,我们如何让服务器文件返回我们写的函数名

    于是,jsonp应运而生,我们在请求参数中来规定服务器文件返回的函数名

      

      jQuery下

    $(function () {
    
        $.ajax({
            url: "http://localhost/20160904/07ems.php",
            type: "GET",
            dataType: "jsonp",
            jsonp:  "_jsonp",
            success: function (json) {
                console.log(json);
            },error: function () {
                console.log("失败");
            }
        });
        
    });
    

      

    <?php
    
        /*GET请求不缓存响应*/
        header("Cache-Control:no-cache");
        /*返回的字符集规范*/
        header("Content-Type:text/html;charset=utf-8");
    
        function funGET($str){
            return  !empty($_GET[$str]) ? $_GET[$str] : null;
        }
        function funPOST($str){
            return !empty($_POST[$str]) ? $_POST[$str] : null;
        }
    
        $callback = $_GET["_jsonp"];
    
        $aData = array("正","大","综","艺");
    
        echo $callback."(".json_encode($aData).")";
    
    ?>
    

      

     解决方案2.iframe内嵌

     解决方案3.服务器端解决  

        /*允许跨域访问*/
        header("Access-Control-Allow-Origin:*");
    

      

  • 相关阅读:
    Docker
    Docker
    log4j日志类的使用
    &times被转义成x的解决方法
    java通用的jdbc数据库操作类
    java一个调用webapi的工具类
    Java 开发杂记
    J2EE名词解释
    C# 进程之间的通讯
    如何捕获全局异常
  • 原文地址:https://www.cnblogs.com/WeWeZhang/p/5842426.html
Copyright © 2011-2022 走看看