JQuery的Ajax跨域请求原理概述及实例


Posted in Javascript onApril 26, 2013

今天在项目中需要做远程数据加载并渲染页面,直到开发阶段才意识到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\"}])"); 
}
Javascript 相关文章推荐
简单三步,搞掂内存泄漏
Mar 10 Javascript
Js放到HTML文件中的哪个位置有什么区别
Aug 21 Javascript
jquery ajax 局部刷新小案例
Feb 08 Javascript
jquery使用正则表达式验证email地址的方法
Jan 22 Javascript
jQuery的remove()方法使用详解
Aug 11 Javascript
AngularJS实现分页显示数据库信息
Jul 01 Javascript
D3.js实现饼状图的方法详解
Sep 21 Javascript
Angular.js中定时器循环的3种方法总结
Apr 27 Javascript
深入理解基于vue-cli的vuex配置
Jul 24 Javascript
vue 中动态绑定class 和 style的方法代码详解
Jun 01 Javascript
vue父组件异步获取数据传给子组件的方法
Jul 26 Javascript
原生JS检测CSS3动画是否结束的方法详解
Jan 27 Javascript
jquery实现textarea输入字符控制(仿微博输入控制字符)
Apr 26 #Javascript
表单类各种类型(文本框)失去焦点效果jquery代码
Apr 26 #Javascript
基于jquery中children()与find()的区别介绍
Apr 26 #Javascript
基于jQuery选择器的整理集合
Apr 26 #Javascript
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
Apr 26 #Javascript
Javascript计算两个marker之间的距离(Google Map V3)
Apr 26 #Javascript
jquery中.add()的使用分析
Apr 26 #Javascript
You might like
【动漫杂谈】关于《请在T台上微笑》
2020/03/03 日漫
一个用于网络的工具函数库
2006/10/09 PHP
PHP中常用数组处理方法实例分析
2008/08/30 PHP
php数组相加 array(“a”)+array(“b”)结果还是array(“a”)
2012/09/19 PHP
php使用qr生成二维码的示例分享
2014/01/20 PHP
thinkphp实现图片上传功能
2016/01/13 PHP
PHP通过调用新浪API生成t.cn格式短网址链接的方法详解
2019/02/20 PHP
vmware linux系统安装最新的php7图解
2019/04/14 PHP
Javascript 闭包引起的IE内存泄露分析
2012/05/23 Javascript
从数据结构分析看:用for each...in 比 for...in 要快些
2013/04/17 Javascript
js获取键盘按键响应事件(兼容各浏览器)
2013/05/16 Javascript
jQuery实现点击文本框弹出热门标签的提示效果
2013/11/17 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
JS 组件系列之Bootstrap Table的冻结列功能彻底解决高度问题
2017/06/30 Javascript
详解基于angular-cli配置代理解决跨域请求问题
2017/07/05 Javascript
Router解决跨模块下的页面跳转示例
2018/01/11 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
layui框架table 数据表格的方法级渲染详解
2018/08/19 Javascript
详解vue的数据劫持以及操作数组的坑
2019/04/18 Javascript
echarts大屏字体自适应的方法步骤
2019/07/12 Javascript
[44:01]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS paiN
2018/03/31 DOTA
[00:15]TI9观赛名额抽取
2019/07/10 DOTA
Python判断操作系统类型代码分享
2014/11/22 Python
django model去掉unique_together报错的解决方案
2016/10/18 Python
Django 简单实现分页与搜索功能的示例代码
2019/11/07 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
Python Tkinter Entry和Text的添加与使用详解
2020/03/04 Python
python MultipartEncoder传输zip文件实例
2020/04/07 Python
有关pycharm登录github时有的时候会报错connection reset的问题
2020/09/15 Python
英国在线购买轮胎、预订汽车、汽车维修和装配网站:Protyre
2020/04/12 全球购物
大学四年的个人自我评价
2014/01/14 职场文书
化妆品促销方案
2014/02/24 职场文书
查摆问题整改措施
2014/10/24 职场文书
看上去很美观后感
2015/06/10 职场文书
利用javaScript处理常用事件详解
2021/04/14 Javascript
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python