zoukankan      html  css  js  c++  java
  • 我是跨域的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 生成度独特的函数名,这样管理请求更容易,也能方便地提供回调函数和错误处理。
     
     
     
  • 相关阅读:
    c#中获取服务器IP,客户端IP以及Request.ServerVariables详细说明
    无废话MVC入门教程二[第一个小Demo]
    winform使用xml作为数据源
    SQL Server 2005为数据库设置用户名和密码的方法
    数据库 的版本为 661,无法打开。此服务器支持 655 版及更低版本。不支持降级路径。
    Visual Studio快速封装字段方法
    erp crm oa
    sqldbhelper
    OleDbHelper
    存储过程分页(3)
  • 原文地址:https://www.cnblogs.com/zqzjs/p/4975829.html
Copyright © 2011-2022 走看看