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 相关文章推荐
判断目标是否是window,document,和拥有tagName的Element的代码
May 31 Javascript
JavaScript中使用Substring删除字符串最后一个字符
Nov 03 Javascript
jQuery使用after()方法在元素后面添加多项内容的方法
Mar 26 Javascript
JavaScript中的acos()方法使用详解
Jun 14 Javascript
js制作带有遮罩弹出层实现登录注册表单特效代码分享
Sep 05 Javascript
css和js实现弹出登录居中界面完整代码
Nov 26 Javascript
vue.js 获取select中的value实例
Mar 01 Javascript
写一个移动端惯性滑动&回弹Vue导航栏组件 ly-tab
Mar 06 Javascript
Servlet3.0与纯javascript通过Ajax交互的实例详解
Mar 18 Javascript
npm scripts 使用指南详解
Oct 08 Javascript
Node.js 多线程完全指南总结
Mar 27 Javascript
Vue两种组件类型:递归组件和动态组件的用法
Aug 06 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线程的内存回收问题
2016/07/08 PHP
在php的yii2框架中整合hbase库的方法
2018/09/20 PHP
thinkphp5框架扩展redis类方法示例
2019/05/06 PHP
JS类定义原型方法的两种实现的区别评论很多
2007/09/12 Javascript
jQuery Clone Bug解决代码
2010/12/22 Javascript
jquery+json实现数据列表分页示例代码
2013/11/15 Javascript
IE与FF下javascript获取网页及窗口大小的区别详解
2014/01/14 Javascript
javascript定义类和类的实现实例详解
2015/12/01 Javascript
利用Node.JS实现邮件发送功能
2016/10/21 Javascript
Angular工具方法学习
2016/12/26 Javascript
原生js实现可爱糖果数字时间特效
2016/12/30 Javascript
Mongoose经常返回e11000 error的原因分析
2017/03/29 Javascript
js中关于Blob对象的介绍与使用
2019/11/29 Javascript
Vue项目开发常见问题和解决方案总结
2020/09/11 Javascript
Python最基本的数据类型以及对元组的介绍
2015/04/14 Python
Python 制作糗事百科爬虫实例
2016/09/22 Python
利用Python自带PIL库扩展图片大小给图片加文字描述的方法示例
2017/08/08 Python
python中itertools模块zip_longest函数详解
2018/06/12 Python
django之跨表查询及添加记录的示例代码
2018/10/16 Python
python列表,字典,元组简单用法示例
2019/07/11 Python
实例讲解使用CSS实现多边框和透明边框的方法
2015/09/08 HTML / CSS
使用纯 CSS 创作一个脉动 loader效果的源码
2018/09/28 HTML / CSS
Alba Moda德国网上商店:意大利时尚女装销售
2016/11/14 全球购物
Revolution Beauty美国官网:英国知名化妆品网站
2018/07/23 全球购物
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
医药专业推荐信
2013/11/15 职场文书
总务岗位职责
2013/11/19 职场文书
建议书怎么写
2014/03/12 职场文书
管理提升方案
2014/06/04 职场文书
2015年新学期寄语
2015/02/26 职场文书
2015年推普周活动方案
2015/05/06 职场文书
创业计划书之餐饮
2019/09/02 职场文书
基于Go Int转string几种方式性能测试
2021/04/28 Golang
vue使用refs获取嵌套组件中的值过程
2022/03/31 Vue.js