今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到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的调用代码示例:

复制代码 代码如下:
$.ajax({
type : "get",
async:false,
url : "http://www.xxx.com/ajax.do",
dataType : "jsonp",
jsonp: "callbackparam",//服务端用于接收callback调用的function名的参数
jsonpCallback:"success_jsonpCallback",//callback的function名称
success : function(json){
alert(json);
alert(json[0].name);
},
error:function(){
alert('fail');
}
});

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

复制代码 代码如下:

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

最新文章

  1. 用Spring+Junit4.4进行测试(使用注解)
  2. Cordova webapp实战开发:(3)后面可能会学到的东西
  3. 安装 python psutil 包
  4. Why Apache Spark is a Crossover Hit for Data Scientists [FWD]
  5. jquery ui datepicker中文显示
  6. 你好,C++(27)在一个函数内部调用它自己本身 5.1.5 函数的递归调用
  7. Spring Boot简单xml配置集成mybatis
  8. 数据库中插入数据时发生ora-00984错误
  9. Spring MVC 文件上传 & 文件下载
  10. COPD——团队项目测试心得
  11. linux(centos)测试带宽
  12. jisuanqi
  13. string.intern
  14. MySQL数据类型--与MySQL零距离接触2-13MySQL唯一约束
  15. mybatis+spring配置
  16. daterangepicker日历插件使用参数注意问题
  17. 无人驾驶之激光雷达&摄像头(主要from 速腾CEO 邱纯鑫分享)
  18. Hadoop HBase概念学习系列之HFile(二十)
  19. springMVC源码分析--HttpMessageConverter参数read操作(二)
  20. tcp流协议产生的粘包问题和解决方案

热门文章

  1. The data is said to include information from networks
  2. matlab 非平稳变化时域分析
  3. jQuery遍历Json数组
  4. window2008 r2 负载均衡
  5. 从零开始学习Node.js例子零 永远的Hello World
  6. iOS-音频和视频
  7. 极简版 react+webpack 脚手架
  8. pytho day6 <正则表达式、常用模块、反射>
  9. [读书笔记]java中的类加载器
  10. 使用 CSS 去掉 iPhone 网页上按钮的超大圆角默认样式