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 相关文章推荐
jquery tools 系列 scrollable学习
Sep 06 Javascript
基于jQuery的淡入淡出可自动切换的幻灯插件打包下载
Sep 15 Javascript
Js制作简单弹出层DIV在页面居中 中间显示遮罩的具体方法
Aug 08 Javascript
JavaScript返回当前会话cookie全部键值对照的方法
Apr 03 Javascript
深入理解JavaScript中的对象
Jun 04 Javascript
js纯数字逐一停止显示效果的实现代码
Mar 16 Javascript
Bootstrap+jfinal实现省市级联下拉菜单
May 30 Javascript
Bootstrap和Java分页实例第二篇
Dec 23 Javascript
利用JavaScript实现栈的数据结构示例代码
Aug 02 Javascript
详解vue 模拟后台数据(加载本地json文件)调试
Aug 25 Javascript
Vue props 单向数据流的实现
Nov 06 Javascript
vue项目两种方式实现竖向表格的思路分析
Apr 28 Vue.js
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
jQuery+CSS 半开折叠效果原理及代码(自写)
2013/03/04 Javascript
javascript中clipboardData对象用法详解
2015/05/13 Javascript
在Javascript中处理字符串之big()方法的使用
2015/06/08 Javascript
jQuery模拟360浏览器切屏效果幻灯片(附demo源码下载)
2016/01/29 Javascript
快速解决Canvas.toDataURL 图片跨域的问题
2016/05/10 Javascript
javascript 常用验证函数总结
2016/06/28 Javascript
js面向对象实现canvas制作彩虹球喷枪效果
2016/09/24 Javascript
JS代码实现百度地图 画圆 删除标注
2016/10/12 Javascript
JS基于递归实现倒计时效果的方法
2016/11/26 Javascript
JavaScript结合HTML DOM实现联动菜单
2017/04/05 Javascript
JS中IP地址与整数相互转换的实现代码
2017/04/10 Javascript
express+mockjs实现模拟后台数据发送功能
2018/01/07 Javascript
vue.js使用代理和使用Nginx来解决跨域的问题
2018/02/03 Javascript
vue2.0组件之间传值、通信的多种方式(干货)
2018/02/10 Javascript
nodejs搭建本地服务器轻松解决跨域问题
2018/03/21 NodeJs
详解.vue文件解析的实现
2018/06/11 Javascript
[35:27]完美世界DOTA2联赛循环赛 GXR vs FTD BO2第二场 10.29
2020/10/29 DOTA
Python过滤列表用法实例分析
2016/04/29 Python
Python黑帽编程 3.4 跨越VLAN详解
2016/09/28 Python
python自动发邮件总结及实例说明【推荐】
2019/05/31 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
python 实现矩阵按对角线打印
2019/11/29 Python
基于Tensorflow使用CPU而不用GPU问题的解决
2020/02/07 Python
Python unittest装饰器实现原理及代码
2020/09/08 Python
web字体加载方案优化小结
2019/11/29 HTML / CSS
Zooplus葡萄牙:欧洲领先的网上宠物商店
2018/07/01 全球购物
服装店营销方案
2014/03/10 职场文书
不服从公司安排检讨书
2014/09/24 职场文书
中职毕业生自我鉴定范文(3篇)
2014/09/28 职场文书
2014年服务行业工作总结
2014/11/18 职场文书
2014年党风廉政工作总结
2014/12/03 职场文书
承诺保证书格式
2015/02/28 职场文书
2015国庆66周年宣传语
2015/07/14 职场文书
Spring Data JPA框架持久化存储数据到数据库
2022/04/28 Java/Android
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript
redis lua限流算法实现示例
2022/07/15 Redis