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实现倒计时按钮的实现代码
Mar 23 Javascript
js 验证身份证信息有效性
Mar 28 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
Nov 26 Javascript
jquery读写cookie操作实例分析
Dec 24 Javascript
使用jQuery的load方法设计动态加载及解决被加载页面js失效问题
Mar 01 Javascript
详解vue-cli中配置sass
Jun 21 Javascript
Vue父子组件之间的通信实例详解
Sep 28 Javascript
对angular4子路由&辅助路由详解
Oct 09 Javascript
VUE+Element UI实现简单的表格行内编辑效果的示例的代码
Oct 31 Javascript
微信小程序3D轮播实现代码
Sep 19 Javascript
javaScript 实现重复输出给定的字符串的常用方法小结
Feb 20 Javascript
Element-ui Layout布局(Row和Col组件)的实现
Dec 06 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
PHP自定session保存路径及删除、注销与写入的方法
2014/11/18 PHP
推荐几个开源的微信开发项目
2014/12/28 PHP
PHPCMS2008广告模板SQL注入漏洞修复
2016/10/11 PHP
php中curl和soap方式请求服务超时问题的解决
2018/06/11 PHP
Laravel框架查询构造器简单示例
2019/05/08 PHP
jquery取子节点及当前节点属性值的方法
2014/09/09 Javascript
JavaScript charCodeAt方法入门实例(用于取得指定位置字符的Unicode编码)
2014/10/17 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
javascript使用输出语句实现网页特效代码
2015/08/06 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
2017/02/12 Javascript
JavaScript 总结几个提高性能知识点(推荐)
2017/02/20 Javascript
微信小程序 action-sheet 反馈上拉菜单简单实例
2017/05/11 Javascript
微信小程序图片自适应支持多图实例详解
2017/06/21 Javascript
NodeJS实现图片上传代码(Express)
2017/06/30 NodeJs
Angular中的$watch方法详解
2017/09/18 Javascript
vue-router 起步步骤详解
2019/03/26 Javascript
JavaScript setInterval()与setTimeout()计时器
2019/12/27 Javascript
Python 字符串中的字符倒转
2008/09/06 Python
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Python的Tornado框架的异步任务与AsyncHTTPClient
2016/06/27 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
2018/01/30 Python
一个简单的python爬虫程序 爬取豆瓣热度Top100以内的电影信息
2018/04/17 Python
Python实现的基于优先等级分配糖果问题算法示例
2018/04/25 Python
使用NumPy和pandas对CSV文件进行写操作的实例
2018/06/14 Python
Python使用matplotlib绘制Logistic曲线操作示例
2019/11/28 Python
nginx搭建基于python的web环境的实现步骤
2020/01/03 Python
Python爬虫爬取糗事百科段子实例分享
2020/07/31 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
Autopep8的使用(python自动编排工具)
2021/03/02 Python
链表面试题-一个链表的结点结构
2015/05/04 面试题
介绍一下grep命令的使用
2015/06/12 面试题
小学开学典礼主持词
2014/03/19 职场文书
大学生新学期计划书
2014/04/28 职场文书
安康杯竞赛活动总结
2014/05/05 职场文书
SQL Server数据库基本概念、组成、常用对象与约束
2022/03/20 SQL Server