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 相关文章推荐
基于Asp.net与Javascript控制的日期控件
May 22 Javascript
Javascript的数组与字典用法与遍历对象的属性技巧
Nov 07 Javascript
js动态添加onclick事件可传参数与不传参数
Jul 29 Javascript
jQuery中clearQueue()方法用法实例
Dec 29 Javascript
全面理解JavaScript中的继承(必看)
Jun 16 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
Jul 01 Javascript
利用javascript实现的三种图片放大镜效果实例(附源码)
Jan 23 Javascript
JavaScrpt的面向对象全面解析
May 09 Javascript
使用Node.js搭建静态资源服务详细教程
Aug 02 Javascript
bing Map 在vue项目中的使用详解
Apr 09 Javascript
vue-cli初始化项目中使用less的方法
Aug 09 Javascript
vue使用自定义指令实现拖拽
Jan 29 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集成FCK的函数代码
2008/09/27 PHP
PHP排序算法之直接插入排序(Straight Insertion Sort)实例分析
2018/04/20 PHP
基于jquery的实现简单的表格中增加或删除下一行
2010/08/01 Javascript
table insertRow、deleteRow定义和用法总结
2014/05/14 Javascript
js获取元素外链样式的方法
2015/01/27 Javascript
JavaScript实现梯形乘法表的方法
2015/04/25 Javascript
javascript实现完美拖拽效果
2015/05/06 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
jQuery无刷新上传之uploadify3.1简单使用
2016/06/18 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
ES6入门教程之let和const命令详解
2017/05/17 Javascript
解决bootstrap中使用modal加载kindeditor时弹出层文本框不能输入的问题
2017/06/05 Javascript
最通俗易懂的javascript变量提升详解
2017/08/05 Javascript
webpack项目调试以及独立打包配置文件的方法
2018/02/28 Javascript
swiper在angularjs中使用循环轮播失效的解决方法
2018/09/27 Javascript
微信小程序实现左滑修改、删除功能
2020/10/19 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
js通过canvas生成图片缩略图
2020/10/02 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
[00:35]可解锁地面特效
2018/12/20 DOTA
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
2017/08/21 Python
Python中进程和线程的区别详解
2017/10/29 Python
python异步编程 使用yield from过程解析
2019/09/25 Python
Pycharm插件(Grep Console)自定义规则输出颜色日志的方法
2020/05/27 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
Pycharm添加虚拟解释器报错问题解决方案
2020/10/13 Python
豆腐の盛田屋官网:日本自然派的豆乳面膜、肥皂、化妆水、乳液等
2016/10/08 全球购物
One.com挪威:北欧成长最快的网络托管公司
2016/11/19 全球购物
机电工程专业应届生求职信
2013/10/03 职场文书
高三自我评价
2014/02/01 职场文书
公司门卫的岗位职责
2014/02/19 职场文书
合作投资意向书
2014/04/01 职场文书
《英英学古诗》教学反思
2014/04/11 职场文书
使用python如何删除同一文件夹下相似的图片
2021/05/07 Python
详解redis在微服务领域的贡献
2021/10/16 Redis