jQuery跨域操作 jsonp

getJSON方法获取,加回调函数,需要服务器配合,先上代码:

 

服务器端PHP代码:
$names = array(

    array(
        "name" => "Peter",

        "text" => "abc1",
    ),

    array(
        "name" => "Quagmire",

        "text" => "abc2",
    ),

    array(
        "name" => "Joe",

        "text" => "abc3",
    )

);
$json = json_encode($arr); //用Json_encode函数处理php的数组

echo $_GET['callback']."(".$json.")";  //jsonp必须

 

客户端PHP代码:
$.getJSON("http://www.test.com?id=13&num=5&callback=?", function(data){
// 往后台传递的参数1;
$(date).each(function(i){
    this['name'];  //或this.name;
    this[text];    //或this.text;
}
var html = decodeURI(data.str)
$('#head').html(html); //调用用来显示内容的div
});

 

    JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然,究其本质还是通过script标签动态加载js,似乎这是实现真正跨域的唯一方法。

    如果按照url?callback=?的语法指定一个JSONP回调函数,就可以加载一个跨域的JSON数据。JQuery可以自动的将?替换为一个生成的函数名的调用。当完成后,这个函数就被删除。同时JQuery还对非跨域的调用进行优化,如果是在同一个域名下,就会使用普通的AJAX请求。

    服务器返回的值要用得到的callback的值做函数名,把json结果包起来

    echo $_GET['callback']."(".$json.")"; 

  

1.JSONP(JSON with Padding-填充json数据也就是常用的json跨域方式):利用script标签,通过特定的src地址的调用,来执行一个客户端的js函数,在 服务器端生成相对的数据(json格式)并以参数的形式传递给这个客户端的js函数并执行这个函数,前提是需要服务器端的数据输出支持。  

     

2.为什么使用JSONP:由于 JSON 只是一种含有简单括号结构的纯文本,因此许多通道都可以交换 JSON 消息。因为同源策略的限制,我们不能在与外部服务器进行通信的时候使用 XMLHttpRequest。而JSONP是一种可以绕过同源策略的方法,即通过使用 JSON 与 <script> 标记相结合的方法,从服务端直接返回可执行的JavaScript函数调用或者JavaScript对象。       

 

3.谁在使用JSONP:dojo、JQuery、Youtube GData API 、Google Social Graph API 、Digg API 、GeoNames webservice、豆瓣API、Del.icio.us JSON API等。

  

 

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值