预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

JavaAjaxjsonp跨域请求详解JavaAjaxjsonp跨域请求详解怎样用java代码发起ajax的jsonp并得到返回数据?以下是百分网小编搜索整理的关于JavaAjaxjsonp跨域请求详解,感兴趣的小伙伴们可以参考一下!想了解更多相关信息请持续关注我们应届毕业生考试网!1、什么是JSONP一般来说位于server1.example.com的网页无法与不是server1.example.com的服务器沟通,而HTML的<script>元素是一个例外。利用<script>元素的这个开放策略,网页可以得到从其他来源动态产生的JSON资料,而这种使用模式就是所谓的JSONP。用JSONP抓到的资料并不是JSON,而是任意的JavaScript,用JavaScript直译器执行而不是用JSON解析器解析。JSONP是一种协议,为了解决客户端请求服务器跨域的问题,但是并非是正式的传输协议。该协议的一个要点就是允许用户传递一个callback参数给服务端,然后服务端返回数据时会将这个callback参数作为函数名来包裹住JSON数据,这样客户端就可以随意定制自己的函数来自动处理返回数据了.2、Ajax请求其他域接口我这个项目要请求另外一个第一个后台接口请求数据,在页面渲染的时候,通过ajax加载数据如下:$.ajax({url:'http://www.xxx.cn/lalala?method=10082&page=1&pageSize=10',type:'GET',dataType:'json',timeout:5000,contentType:'application/json;charset=utf-8',success:function(result){alter("aaaa");}});这样就出现跨域的.错误,如下所示:No'Access-Control-Allow-Origin'headerispresentontherequestedresource.Origin'null'isthereforenotallowedaccess.TheresponsehadHTTPstatuscode500.这里就说明不允许跨域请求,那么怎么办?换成jsonp好了。就改了dataType这个字段。$.ajax({url:'http://www.xxx.cn/lalala?method=10082&page=1&pageSize=10',type:'GET',dataType:'jsonp',timeout:5000,contentType:'application/json;charset=utf-8',success:function(result){alter("aaaa");}});结果:UncaughtSyntaxError:Unexpectedtoken!whatthefuck! 明明请求回来数据,结果还是报错。原因是ajax请求服务器,而返回的数据格式不符合jsonp的返回格式,那么jsonp格式是什么样的?Callback({msg:'thisisjsondata'})这是什么叼东西,奇葩谁定义的!如果你这么想,看来你没有仔细看第1点,JSON是一种轻量级的数据交换格式,像xml一样。JSONP是一种使用JSON数据的方式,返回的不是JSON对象,是包含JSON对象的javaScript脚本。但是上图是一段json串,所以报错啦。3、参数返回处理有一点你会发现在你是用jsonp协议请求时,在参数中除了自己填写的参数外还有名为callback的参数,如图:看看这个参数是什么东西,因为我在ajax请求的时候没有指定,jsonp这个参数,那么系统默认参数名为“callback”。没有指定jsonpCallback参数,那么jquery会生成随机的函数名,如上图所示。比如我如下配置:$.ajax({url:'http://www.xxx.cn/lalala?method=10082&page=1&pageSize=10',type:'GET',dataType:'jsonp',jsonp:'callbacka',//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)jsonpCallback:"