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 可排列的表实现代码
Nov 13 Javascript
客户端 使用XML DOM加载json数据的方法
Sep 28 Javascript
jQuery的.live()和.die() 使用介绍
Sep 10 Javascript
JavaScript自执行闭包的小例子
Jun 29 Javascript
js拖动div 当鼠标移动时整个div也相应的移动
Nov 21 Javascript
JavaScript中函数(Function)的apply与call理解
Jul 08 Javascript
jQuery控制li上下循环滚动插件用法实例(附demo源码下载)
May 28 Javascript
localStorage实现便签小程序
Nov 28 Javascript
基于JavaScript实现弹幕特效
Aug 27 Javascript
React 组件间的通信示例
Jun 14 Javascript
React如何实现浏览器打印部分内容详析
May 19 Javascript
js面向对象方式实现拖拽效果
Mar 03 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 获取远程网页内容的函数
2009/09/08 PHP
ThinkPHP结合AjaxFileUploader实现无刷新文件上传的方法
2014/10/29 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
PHP流Streams、包装器wrapper概念与用法实例详解
2017/11/17 PHP
PHP切割整数工具类似微信红包金额分配的思路详解
2019/09/18 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
JavaScript 检测浏览器和操作系统的脚本
2008/12/26 Javascript
jQuery的一些特性和用法整理小结
2010/01/13 Javascript
jQuery中json对象的复制方式介绍(数组及对象)
2013/06/08 Javascript
使用javascript创建快捷方式的简单实例
2013/08/09 Javascript
jquery使用jxl插件导出excel示例
2014/04/14 Javascript
jquery选择器简述
2015/08/31 Javascript
jQuery实现商品活动倒计时
2015/10/16 Javascript
JavaScript知识点总结(十六)之Javascript闭包(Closure)代码详解
2016/05/31 Javascript
jQuery使用$获取对象后检查该对象是否存在的实现方法
2016/09/04 Javascript
tween.js缓动补间动画算法示例
2018/02/13 Javascript
微信小程序实现展示评分结果功能
2019/02/15 Javascript
C#程序员入门学习微信小程序的笔记
2019/03/05 Javascript
vue项目中mock.js的使用及基本用法
2019/05/22 Javascript
微信小程序加载机制及运行机制图解
2019/11/27 Javascript
Vue 集成 PDF.js 实现 PDF 预览和添加水印的步骤
2021/01/22 Vue.js
python enumerate函数的使用方法总结
2017/11/15 Python
python reduce 函数使用详解
2017/12/05 Python
教你使用python实现微信每天给女朋友说晚安
2018/03/23 Python
如何用Python合并lmdb文件
2018/07/02 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
python使用Plotly绘图工具绘制柱状图
2019/04/01 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
pycharm重命名文件的方法步骤
2019/07/29 Python
pygame实现飞机大战
2020/03/11 Python
Python requests及aiohttp速度对比代码实例
2020/07/16 Python
CSS实现的一闪而过的图片闪光效果
2014/04/23 HTML / CSS
正隆泰信息技术有限公司上机题
2012/06/14 面试题
敬老文明号事迹材料
2014/01/16 职场文书
学生拾金不昧表扬信
2014/01/21 职场文书
家长学校教学计划
2015/01/19 职场文书