博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JQuery的Ajax跨域请求的解决方案
阅读量:6221 次
发布时间:2019-06-21

本文共 1145 字,大约阅读时间需要 3 分钟。

hot3.png

今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到ajax跨域请求的问题,隐约记得Jquery有提过一个ajax跨域请求的解决方式,于是即刻翻出Jquery的API出来研究,发现JQuery对于Ajax的跨域请求有两类解决方案,不过都是只支持get方式。分别是JQuery的 jquery.ajax jsonp格式和jquery.getScript方式。

        什么是jsonp格式呢?API原文:如果获取的数据文件存放在远程服务器上(域名不同,也就是跨域获取数据),则需要使用jsonp类型。使用这种类型的话,会创建一个查询字符串参数 callback=? ,这个参数会加在请求的URL后面。服务器端应当在JSON数据前加上回调函数名,以便完成一个有效的JSONP请求。意思就是远程服务端需要对返回的数据做下处理,根据客户端提交的callback的参数,返回一个callback(json)的数据,而客户端将会用script的方式处理返回数据,来对json数据做处理。JQuery.getJSON也同样支持jsonp的数据方式调用。

        客户端JQuery.ajax的调用代码示例:

01 $.ajax({
02     type : "get",
03     async:false,
04     url : "http://www.xxx.com/ajax.do",
05     dataType : "jsonp",
06     jsonp: "callbackparam",//服务端用于接收callback调用的function名的参数
07     jsonpCallback:"success_jsonpCallback",//callback的function名称
08     success : function(json){
09         alert(json);
10         alert(json[0].name);
11     },
12     error:function(){
13         alert('fail');
14     }
15 });

    服务端返回数据的示例代码:

1 public void ProcessRequest (HttpContext context) {
2     context.Response.ContentType = "text/plain";
3     String callbackFunName = context.Request["callbackparam"];
4     context.Response.Write(callbackFunName + "([ { name:\"John\"}])");
5 }

转载于:https://my.oschina.net/u/1866821/blog/290963

你可能感兴趣的文章
jquery的checkbox,radio,select等方法总结
查看>>
Linux coredump
查看>>
Ubuntu 10.04安装水晶(Mercury)无线网卡驱动
查看>>
Myeclipes快捷键
查看>>
我的友情链接
查看>>
ToRPC:一个双向RPC的Python实现
查看>>
我的友情链接
查看>>
nginx在reload时候报错invalid PID number
查看>>
神经网络和深度学习-第二周神经网络基础-第二节:Logistic回归
查看>>
Myeclipse代码提示及如何设置自动提示
查看>>
c/c++中保留两位有效数字
查看>>
ElasticSearch 2 (32) - 信息聚合系列之范围限定
查看>>
VS2010远程调试C#程序
查看>>
[MicroPython]TurniBit开发板DIY自动窗帘模拟系统
查看>>
由String类的Split方法所遇到的两个问题
查看>>
Python3.4 12306 2015年3月验证码识别
查看>>
从Handler.post(Runnable r)再一次梳理Android的消息机制(以及handler的内存泄露)
查看>>
windows查看端口占用
查看>>
Yii用ajax实现无刷新检索更新CListView数据
查看>>
JDBC的事务
查看>>