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 相关文章推荐
如何使用JS获取IE上传文件路径(IE7,8)
Jul 08 Javascript
9行javascript代码获取QQ群成员具体实现
Oct 16 Javascript
JS中typeof与instanceof之间的区别总结
Nov 14 Javascript
js控制文本框只输入数字和小数点的方法
Mar 10 Javascript
JavaScript简单实现弹出拖拽窗口(一)
Jun 17 Javascript
jQuery插件Flexslider实现图片轮播、图文结合滑动切换效果
Apr 16 Javascript
AngularJS ng-bind-html 指令详解及实例代码
Jul 30 Javascript
JavaScript实现垂直向上无缝滚动特效代码
Nov 23 Javascript
Javascript实现信息滚动效果
May 18 Javascript
Node.js 使用流实现读写同步边读边写功能
Sep 11 Javascript
微信小程序支付及退款流程详解
Nov 30 Javascript
Vue自动构建发布脚本的方法示例
Jul 24 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
让Json更懂中文(JSON_UNESCAPED_UNICODE)
2011/10/27 PHP
解析php中如何直接执行SHELL
2013/06/28 PHP
php+jQuery.uploadify实现文件上传教程
2014/12/26 PHP
PHP队列场景以及实现代码实例详解
2021/02/26 PHP
PHP7新特性
2021/03/09 PHP
javascript 短路法代码精简
2009/08/20 Javascript
jQuery 获取URL参数的插件
2010/03/04 Javascript
jQuery 表格工具集
2010/04/25 Javascript
javascript 实现 秒杀,团购 倒计时展示的记录 分享
2013/07/12 Javascript
深入领悟JavaScript中的面向对象
2013/11/18 Javascript
javascript获取元素离文档各边距离的方法
2015/02/13 Javascript
jQuery定义背景动态切换效果的方法
2015/03/23 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
jquery转盘抽奖功能实现
2015/11/13 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
原生JavaScript实现Tooltip浮动提示框特效
2017/03/07 Javascript
Vue中建立全局引用或者全局命令的方法
2017/08/21 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
vue使用自定义icon图标的方法
2018/05/14 Javascript
使用webpack搭建react开发环境的方法
2018/05/15 Javascript
JavaScript设计模式之命令模式实例分析
2019/01/16 Javascript
详解如何在vue项目中使用layui框架及采坑
2019/05/05 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
express中static中间件的具体使用方法
2019/10/17 Javascript
原生js实现随机点餐效果
2019/12/10 Javascript
python实现电子词典
2020/04/23 Python
Win8.1下安装Python3.6提示0x80240017错误的解决方法
2018/07/31 Python
LN-CC英国:伦敦时尚生活的缩影
2019/09/01 全球购物
澳大利亚领先的女帽及配饰公司:Morgan&Taylor
2019/12/01 全球购物
校园广播稿500字
2014/02/04 职场文书
个人函授自我鉴定
2014/03/25 职场文书
2015年学校总务处工作总结
2015/05/19 职场文书
一波干货,会议主持词开场白范文
2019/05/06 职场文书
小学三年级作文之写景
2019/11/05 职场文书
Django项目如何获得SSL证书与配置HTTPS
2021/04/30 Python
PyTorch device与cuda.device用法
2022/04/03 Python