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 相关文章推荐
List Installed Hot Fixes
Jun 12 Javascript
jQuery拖动div、移动div、弹出层实现原理及示例
Apr 08 Javascript
浅析JavaScript Array和string的转换(推荐)
May 20 Javascript
jQuery添加和删除输入文本框标签代码
May 20 Javascript
微信小程序 window_x64环境搭建
Sep 30 Javascript
深入了解JavaScript的逻辑运算符(与、或)
Dec 20 Javascript
js实现五星评价功能
Mar 08 Javascript
浅谈 Vue v-model指令的实现原理
Jun 08 Javascript
vue单页应用加百度统计代码(亲测有效)
Jan 31 Javascript
Javascript Promise用法详解
May 10 Javascript
使用vue2.6实现抖音【时间轮盘】屏保效果附源码
Apr 24 Javascript
javascript 数组精简技巧小结
Feb 26 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
Mysql中limit的用法方法详解与注意事项
2008/04/19 PHP
php 代码优化之经典示例
2011/03/24 PHP
解析argc argv在php中的应用
2013/06/24 PHP
PHP利用MySQL保存session的实现思路及示例代码
2014/09/09 PHP
推荐25款php中非常有用的类库
2014/09/29 PHP
PHP如何通过传引用的思想实现无限分类(代码简单)
2015/10/13 PHP
php实现等比例不失真缩放上传图片的方法
2016/11/14 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
JQuery的Alert消息框插件使用介绍
2010/10/09 Javascript
html+css+js实现xp window界面及有关功能
2013/03/26 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
2014/04/06 Javascript
javascript实现修改微信分享的标题内容等
2014/12/11 Javascript
JavaScript实现的双向跨域插件分享
2015/01/31 Javascript
JS实现双击编辑可修改状态的方法
2015/08/14 Javascript
JS+CSS实现的经典tab选项卡效果代码
2015/09/16 Javascript
实例讲解jquery与json的结合
2016/01/07 Javascript
js基于cookie方式记住返回页面用法示例
2016/05/27 Javascript
vue.js指令v-for使用及索引获取
2016/11/03 Javascript
如何正确理解javascript的模块化
2017/03/02 Javascript
angular 用拦截器统一处理http请求和响应的方法
2017/06/08 Javascript
jquery登录的异步验证操作示例
2019/05/09 jQuery
详解从vue-loader源码分析CSS Scoped的实现
2019/09/23 Javascript
Vue实现按钮级权限方案
2019/11/21 Javascript
jQuery实现王者荣耀手风琴效果
2020/01/17 jQuery
[55:45]LGD vs OG 2019国际邀请赛淘汰赛 胜者组 BO3 第三场 8.24
2019/09/10 DOTA
OpenCV2.3.1+Python2.7.3+Numpy等的配置解析
2018/01/05 Python
python 寻找离散序列极值点的方法
2019/07/10 Python
使用matlab 判断两个矩阵是否相等的实例
2020/05/11 Python
keras输出预测值和真实值方式
2020/06/27 Python
巴西美妆购物网站:Kutiz Beauté
2019/03/13 全球购物
C语言中一个结构不能包含指向自己的指针吗
2012/05/25 面试题
《藤野先生》教学反思
2014/02/19 职场文书
幼儿教师师德承诺书
2014/05/23 职场文书
任命书范本大全
2014/06/06 职场文书
2014离婚协议书范文
2014/09/10 职场文书
Mysql Online DDL的使用详解
2021/05/20 MySQL