• 我是跨域的JSONP


    1.出现原因:因为web中的同源策略(域名,协议,端口号)限制了跨域访问。
     
    2.区别于json
    (个人理解)json是数据交换格式,jsonp是数据通信中的交互方式
     
    3.jsonp的get与post
    本质是使用script标签的跨域特性。
     
    4.jQuery的写法(一)
    $.ajax({ 
     async:false, 
        url: , 
        type: "GET", 
        dataType: 'jsonp', 
        jsonp: 'jsoncallback', 
        data: qsData, 
        timeout: 5000, 
        success: function (json) {
        
        }, 
        error: function(xhr){ 
         
    });
     
    jQuery的写法(二)
    $.getJSON("http://跨域的dns/document!searchJSONResult.action?name1="+value1+"&jsoncallback=?", 
     function(json){ 
     
    }); 
     
     
     
    5.JS的写法
    var eleScript= document.createElement("script");
    eleScript.type = "text/javascript";
    eleScript.src = "http://...";
    document.getElementsByTagName("HEAD")[0].appendChild(eleScript);
     
    6.原理与过程

    首先在客户端注册一个callback, 然后把callback的名字传给服务器。

    此时,服务器先生成 json 数据。 然后以 javascript 语法的方式,生成一个function , function 名字就是传递上来的参数 jsonp。

    最后将 json 数据直接以入参的方式,放置到 function 中,这样就生成了一段 js 语法的文档,返回给客户端。

    客户端浏览器,解析script标签,并执行返回的 javascript 文档,此时数据作为参数,传入到了客户端预先定义好的 callback 函数里。(动态执行回调函数)


     
    7.一些需要注意的问题
    <1>“myurl?callback=?" jQuery 将自动替换 ? 为正确的函数名,以执行回调函数。
    <2>jQuery中的jsonpCallback:为 jsonp 请求指定一个回调函数名。这个值将用来取代 jQuery 自动生成的随机函数名。这主要用来让 jQuery 生成度独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。
     
     
     
  • 相关阅读:
    git常用命令及多人协同开发及遇到的问题
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    LightOJ
    Codeforces Round #604 (Div. 2) E. Beautiful Mirrors
  • 原文地址:https://www.cnblogs.com/zqzjs/p/4975829.html
Copyright © 2020-2023  润新知