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 相关文章推荐
细品javascript 寻址,闭包,对象模型和相关问题
Apr 27 Javascript
js 图片随机不定向浮动的实现代码
Jul 02 Javascript
javascript中的parseInt和parseFloat区别
Jul 12 Javascript
javascript获取设置div的高度和宽度兼容任何浏览器
Sep 22 Javascript
jQuery实现简单的tab标签页效果
Sep 12 Javascript
原生的强大DOM选择器querySelector介绍
Dec 21 Javascript
解决微信内置浏览器返回上一页强制刷新问题方法
Feb 05 Javascript
对Vue2 自定义全局指令Vue.directive和指令的生命周期介绍
Aug 30 Javascript
angular中子控制器向父控制器传值的实例
Oct 08 Javascript
jquery传参及获取方式(两种方式)
Feb 13 jQuery
Vue+Bootstrap收藏(点赞)功能逻辑与具体实现
Oct 22 Javascript
vue-router路由懒加载及实现的3种方式
Feb 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
实现 win2003 下 mysql 数据库每天自动备份
2006/12/06 PHP
帖几个PHP的无限分类实现想法~
2007/01/02 PHP
php 更新数据库中断的解决方法
2009/06/05 PHP
php制作文本式留言板
2015/03/18 PHP
windows7配置Nginx+php+mysql的详细教程
2016/09/04 PHP
Zend Framework框架中实现Ajax的方法示例
2017/06/27 PHP
使用CSS3实现字体颜色渐变的实现
2021/03/09 HTML / CSS
ExtJs3.0中Store添加 baseParams 的Bug
2010/03/10 Javascript
javascript定时保存表单数据的代码
2011/03/17 Javascript
Javascript的时间戳和php的时间戳转换注意事项
2013/04/12 Javascript
jquery实现的可隐藏重现的靠边悬浮层实例代码
2013/05/27 Javascript
JavaScript结合Bootstrap仿微信后台多图文界面管理
2016/07/22 Javascript
JavaScript实现数组降维详解
2017/01/05 Javascript
vue2.0实现导航菜单切换效果
2017/05/08 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
javascript计算渐变颜色的实例
2017/09/22 Javascript
详解让sublime text3支持Vue语法高亮显示的示例
2017/09/29 Javascript
python爬取安居客二手房网站数据(实例讲解)
2017/10/19 Javascript
javascript执行上下文、变量对象实例分析
2020/04/25 Javascript
[00:17]DOTA2荣耀之路5:It’s a disastah!
2018/05/28 DOTA
对Python之gzip文件读写的方法详解
2019/02/08 Python
python3 打印输出字典中特定的某个key的方法示例
2019/07/06 Python
python IDLE 背景以及字体大小的修改方法
2019/07/12 Python
Django继承自带user表并重写的例子
2019/11/18 Python
pycharm设置python文件模板信息过程图解
2020/03/10 Python
利用 PyCharm 实现本地代码和远端的实时同步功能
2020/03/23 Python
django列表筛选功能的实现代码
2020/03/27 Python
详解Tensorflow不同版本要求与CUDA及CUDNN版本对应关系
2020/08/04 Python
python向xls写入数据(包括合并,边框,对齐,列宽)
2021/02/02 Python
Converse匡威法国官网:美国著名帆布鞋品牌
2018/12/05 全球购物
Collection和Collections的区别
2016/05/02 面试题
Ruby如何实现动态方法调用
2012/11/18 面试题
英文版区域经理求职信
2013/10/23 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书
python for循环赋值问题
2021/06/03 Python
python和C/C++混合编程之使用ctypes调用 C/C++的dll
2022/04/29 Python