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 相关文章推荐
将form表单中的元素转换成对象的方法适用表单提交
May 02 Javascript
使用insertAfter()方法在现有元素后添加一个新元素
May 28 Javascript
JS按回车键实现登录的方法
Aug 25 Javascript
关闭页面window.location事件未执行的原因及解决方法
Sep 01 Javascript
D3.js 从P元素的创建开始(显示可加载数据)
Oct 30 Javascript
浅谈JavaScript函数节流
Dec 09 Javascript
javascript无刷新评论实现方法
May 13 Javascript
浅谈javascript中的Function和Arguments
Aug 30 Javascript
angularJS的radio实现单项二选一的使用方法
Feb 28 Javascript
js常见遍历操作小结
Jun 06 Javascript
怎么理解wx.navigateTo的events参数使用详情
May 18 Javascript
JavaScript offset实现鼠标坐标获取和窗口内模块拖动
May 30 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
PHP 各种排序算法实现代码
2009/08/20 PHP
php simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
2019/09/12 PHP
详细分析PHP 命名空间(namespace)
2020/06/30 PHP
jQuery EasyUI API 中文文档 - ValidateBox验证框
2011/10/06 Javascript
红米手机抢购的js代码
2014/03/10 Javascript
jQuery获得指定元素坐标的方法
2015/04/14 Javascript
JavaScript获得指定对象大小的方法
2015/07/01 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
jQuery mobile 移动web(6)
2015/12/20 Javascript
jquery easyui datagrid实现增加,修改,删除方法总结
2016/05/25 Javascript
微信小程序 触控事件详细介绍
2016/10/17 Javascript
js 模仿锚点定位的实现方法
2016/11/19 Javascript
javascript中递归的两种写法
2017/01/17 Javascript
javaScript基础详解
2017/01/19 Javascript
js 实现获取name 相同的页面元素并循环遍历的方法
2017/02/14 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
详谈commonjs模块与es6模块的区别
2017/10/18 Javascript
webpack proxy 使用(代理的使用)
2020/01/10 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
python解析xml文件操作实例
2014/10/05 Python
解决csv.writer写入文件有多余的空行问题
2018/07/06 Python
pyinstaller打包程序exe踩过的坑
2019/11/19 Python
python groupby 函数 as_index详解
2019/12/16 Python
python中K-means算法基础知识点
2021/01/25 Python
Wiggle新西兰:自行车、跑步、游泳
2020/05/06 全球购物
C#如何调用Windows程序打开一个文档
2014/12/26 面试题
毕业生的自我鉴定
2013/10/29 职场文书
学生手册家长评语
2014/02/10 职场文书
优秀党员获奖感言
2014/02/18 职场文书
寒假家长评语大全
2014/04/16 职场文书
统计学教授推荐信
2014/09/18 职场文书
会议主持词结束语
2015/07/03 职场文书
解析python中的jsonpath 提取器
2022/01/18 Python
星际争霸:毕姥爷vs解冻03
2022/04/01 星际争霸