`
bluky999
  • 浏览: 716001 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Jquery中的AJAX跨域问题

阅读更多

1 关于跨域,网上有很多很多的版本和说法。。。  这里笔者主要用几句话说明JQuery中的AJAX跨域问题;

 

 

2 JQuery中可以实现AJAX跨域访问,但是有条件:

 (1 跨域访问时要多传入一个参数,习惯上叫jsonCallback ,参数值使用? ;

 (2 被跨域访问的server端返回的只能是JSON数据,而且要处理所谓的jsonCallback请求参数(即把该值再回传到客户端),主要目的是为了对客户端请求的 callback function一个标识;

 (3 跨域访问的实现使用$.getSJON()  !

 

 

3 示例:

 

a.com/index.html 中跨域访问b.com?key=xxxx

 

a.com:

 

//... ...

$("#returnDiv").html("Loading ...")

var url = "b.com?key="+$(#inputKey).attr("value")+"&jsonCallback=?";

$.getSJON(url,function (data){$("#returnDiv").html(data)});


// ... ...

 

 

b.com :

 

 处理请求的server端程序需要把结果以这样的形式返回:

 

jsonCallback(JSONdata)

 

其中的jsonCallback就是客户端请求时传过来的参数值,类似于jsonp12148XXXXXX ; JSONdata才是真正的返回数据!

 

 

 

 

所以不要指望在JQuery中直接任意地访问其他站点的数据,除非该站点提供JSON格式的返回数据并处理jsonCallback参数 ! 当然自己的项目就可以设计成可以接受跨域访问的,尤其是java的servelt项目,可以使用filter来统一处理jsonCallback参数,更加简便!!!

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics