Jquery Ajax GetJson实现跨域调用
2011-02-24 11:51
543 查看
Ajax的应用中,由于安全的问题,浏览器默认是不支持跨域调用的,但是在1.2版本之后,Jquery的getJson方法就开始支持跨域调用,实现的原理主要是:虽然JavaScript不支持跨域调用,但是标签<Script>是支持跨域调用的,Jquery.GetJson方法就是利用这点实现的跨域调用。现在就来讨论下,如何利用Jquery.GetJson实现跨域调用。(当然你也可以使用Jquery.Ajax来实现跨域调用,但是其原理也是利用GetJson方法来实现的。)
Jquery.GetJson主要是通过传递Json格式的数据来实现跨域调用的,所以如何封装和解释Json数据就非常重要。Json格式请查看官网的解释(http://www.json.org/json-zh.html),Jquery本身就带有解析Json格式的方法(http://api.jquery.com/jQuery.each/)
这是Jquery官网对Jquery.GetJson的解释:
使用GetJson客户端实例:
Jquery.GetJson首先在客户端注册一个jsoncallback,然后把jsoncallback的名字(如:jsonp1236827957501)传给服务器。注意:服务端得到callback的数值后,要用jsonp1236827957501(......)把将要输出的json内容包括起来,用Response.Write(jsonp1236827957501(......))写入时,服务器生成 json 数据才能被客户端正确接收。
使用GetJson服务端实例:
这里要注意的是:Jquery1.5以后对Jquery.GetJson的方法的返回值做了修改,使用了jqXHR Object作为返回值。
在Jquery1.4中,对服务返回的Json数据格式有严格的要求,这是官网的解释:
在封装Json数据格式时,建议使用工具进行封装,不然容易产生错误,出错不易查找。
当然,跨域调用的方式有很多种,你可以使用$.Ajax来实现,但原理是一样的。Jquery给我们封装的方法还是挺方便的,建议使用。
Jquery.GetJson主要是通过传递Json格式的数据来实现跨域调用的,所以如何封装和解释Json数据就非常重要。Json格式请查看官网的解释(http://www.json.org/json-zh.html),Jquery本身就带有解析Json格式的方法(http://api.jquery.com/jQuery.each/)
这是Jquery官网对Jquery.GetJson的解释:
使用GetJson客户端实例:
$.getJSON("http://XXX.XXX.XXX?jsoncallback=?", //URL jsoncallback=?必须 {id:“”,name:“” }, //Url参数,当然你也可以放在URL后面 function (data) { //获取成功,服务器传回的Json格式的数据 $.each(data, function (key, list) { //解析Json数据 }); });
Jquery.GetJson首先在客户端注册一个jsoncallback,然后把jsoncallback的名字(如:jsonp1236827957501)传给服务器。注意:服务端得到callback的数值后,要用jsonp1236827957501(......)把将要输出的json内容包括起来,用Response.Write(jsonp1236827957501(......))写入时,服务器生成 json 数据才能被客户端正确接收。
使用GetJson服务端实例:
//跨域调用 获取方法名 if (Request["jsoncallback"] != null) { string jsoncall = Request["jsoncallback"].ToString(); //封装JSon格式 sb.Append(jsoncall + "(["); } .......//封装JSon格式 Jsonp1236827957501([{"id":"XXX","aa":"bb"}])... Response.Write(sb.ToString()); Response.End();
这里要注意的是:Jquery1.5以后对Jquery.GetJson的方法的返回值做了修改,使用了jqXHR Object作为返回值。
在Jquery1.4中,对服务返回的Json数据格式有严格的要求,这是官网的解释:
在封装Json数据格式时,建议使用工具进行封装,不然容易产生错误,出错不易查找。
当然,跨域调用的方式有很多种,你可以使用$.Ajax来实现,但原理是一样的。Jquery给我们封装的方法还是挺方便的,建议使用。
相关文章推荐
- jquery ajax结合thinkphp的getjson实现跨域的方法
- 使用$.getJSON实现跨域ajax请求示例代码
- 使用Jquery中getJSON和getScript方法实现跨域(转载)
- 使用iQuery的getJSON方法实现跨域
- 使用Jquery中getJSON和getScript方法实现跨域
- 使用Jquery中getJSON方法实现跨域
- PHP json格式和js json格式 js跨域调用实现代码
- $.getjson方法配合在url上传递jsoncallback=?参数,实现跨域获取指定网站某商品访问量
- jquery的ajax和getJson跨域获取json数据的实现方法
- JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
- jQuery Ajax 跨域请求与getJSON跨域请求
- 使用$.getJSON实现跨域ajax请求
- 一个getjson()方式调用实例【前后台】,适于跨域访问。
- ECSHOP用Jquery的getJSON实现两网站之间跨域读取
- 如何通过js跨域调用ASP.NET Web API (请问如何实现在javascript中通过http get的方式跨域调用ASP.NET Web API?)
- 用jquery.getJSON实现跨域提交
- 使用Jquery的getJSON跨域请求蘑菇街图片资源实现瀑布流
- JQuery使用getJSON跨域调用数据
- 使用$.getJSON实现跨域ajax请求示例代码
- jquery的ajax和getJson跨域获取json数据的实现方法