$.getJSON()跨域哀告实例详解

2019-08-05 09:00栏目:WRB前端

1,同一域名下和其他的请求可以是一样的
js:

$.getJSON()是ajax一个异步传输的功能,下面小编来介绍利用jquery中的$.getJSON()实现跨域请求吧,希望此方法对各位同学会有所帮助哦。

复制代码 代码如下:

jQuery中常用getJSON来调用并获取远程的JSON字符串,将其转换为JSON对象,如果成功,则执行回调函数。原型如下:

var url="";
$(function(){
$.getJSON(url,function(data){
alert (data.Name);
})
});

jQuery.getJSON( url, [data], [callback] ) 跨域加载JSON数据。

服务器返回字符串:
{"Name":"loogn","Age":23}
2,不同域名下
js:

•url: 发送请求的地址
•data : (可选) 待发送key/value参数
•callback: (可选) 载入成功时的回调函数

复制代码 代码如下:

主要用于客户端获取服务器JSON数据

var url="";
$(function(){
$.getJSON(url,function(data){
alert (data.Name);
})
});

1,同一域名下和其他的请求可以是一样的

服务器返回字符串:
jQuery1706543070425920333_1324445763158({"Name":"loogn","Age":23})
返回的字符串就是一个调用一个叫“jQuery1706543070425920333_1324445763158” 的函数,参数是{"Name":"loogn","Age":23}。
其实这个很长的函数名是请求路径中callback=?的作用,我想应该是这样的:$.getJSON方法生成一个对回调方法的引用的名字,换掉?。上面请求会变成

js:

复制代码 代码如下:

 代码如下

string cb = context.Request["callback"];
context.Response.Write(cb "(" json ")");

复制代码

参数名callback也可换成jsoncallback,我想是怕冲突吧,jsoncallback应该优先检测,没有再检测callback(没测试!!)
?也可是具体的函数名,这样回调函数就不能是匿名的了,用?生成只是jQuery为我们的一般操作提供的一个便利。

        var url="";
        $(function(){
            $.getJSON(url,function(data){
                alert (data.Name);
            })
        });

您可能感兴趣的文章:

  • 跨域请求之jQuery的ajax jsonp的使用解惑
  • Javascript跨域请求的4种解决方式
  • AJAX跨域请求json数据的实现方法
  • 借助script进行Http跨域请求:JSONP实现原理及代码
  • js跨域请求的5中解决方式
  • ajax跨域请求js拒绝访问的解决方法
  • 详解AngularJS如何实现跨域请求
  • JS跨域请求外部服务器的资源

服务器返回字符串:

 代码如下

复制代码

{"Name":"loogn","Age":23}

2,不同域名下

js:

 代码如下

复制代码

       var url="";
        $(function(){
            $.getJSON(url,function(data){
                alert (data.Name);
            })
        });

服务器返回字符串:

 代码如下

复制代码

jQuery1706543070425920333_1324445763158({"Name":"loogn","Age":23})

返回的字符串就是一个调用一个叫“jQuery1706543070425920333_1324445763158” 的函数,参数是

 代码如下

复制代码

{"Name":"loogn","Age":23}。

其实这个很长的函数名是请求路径中callback=?的作用,我想应该是这样的:$.getJSON方法生成一个对回调方法的引用的名字,换掉?。上面请求会变成

 

 代码如下

复制代码

    string cb = context.Request["callback"];
    context.Response.Write(cb "(" json ")");

 

参数名callback也可换成jsoncallback,我想是怕冲突吧,jsoncallback应该优先检测,没有再检测callback(没测试!!)

?也可是具体的函数名,这样回调函数就不能是匿名的了,用?生成只是jQuery为我们的一般操作提供的一个便利。

如果上面没有看懂我们接着再看一个实例

a.com使用$.getJson向b.com发送请求,在请求的同时,a.com把需要的传递的内容放到临时文件中(或者membercache),

b.com收到请求,反过来向a.com请求需要的数据,进行必要的操作,再给a.com返回成功的信息。这样就达到跨域大数据量请求的目的了。

当然通讯过程,最好加上协议,安全起见嘛。

 
JS 代码:

 代码如下

复制代码

 $.getJSON(target_url "?jsoncallback=?", 
     {
      'userid': <?php echo $userid;?>
      }, 
     function(result) {
      if(result != 'sc'){
       alert(result);
      }else{
       top.document.getElementById("menu").src = $('#url_' bid).val() "admin/left_menu.php";
       top.document.getElementById("main").src = $('#url_' bid).val() "admin/index_body.php";
      }
     });  

PHP服务端代码:

 代码如下

复制代码

header('Content-Encoding: plain');
$userid = SS($_REQUEST['userid']);
//逻辑代码
$msg =  sc;
$json_str = json_encode(array($msg));
echo $_REQUEST['jsoncallback'].'('.$json_str.')';
exit;

header('Content-Encoding: plain');

这句非常重要,如果没有这句,在IE6下将不能返回信息,导致回调函数无法执行。

另外在网上找到的说法,没经验证

 代码如下

复制代码

<a href=”javascript:void(0);”></a>

做为提交按钮也会导致 ie6下 $.getJSON出错。

提交按钮不能放置在<form>标签里面,否则会form中断了$.getJSON发出的http请求。

jQuery中...

版权声明:本文由威尼斯人app发布于WRB前端,转载请注明出处:$.getJSON()跨域哀告实例详解