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编程起步(第六课)
Jan 10 Javascript
jquery 常用操作方法
Jan 28 Javascript
js 面向对象的技术创建高级 Web 应用程序
Feb 25 Javascript
validator验证控件使用代码
Nov 23 Javascript
使用JS读秒使用示例
Sep 21 Javascript
js简单实现竖向tab选项卡的方法
May 04 Javascript
JavaScript清空数组元素的两种方法简单比较
Jul 10 Javascript
信息滚动效果的实例讲解
Sep 18 Javascript
angularJs利用$scope处理升降序的方法
Oct 08 Javascript
玩转Koa之koa-router原理解析
Dec 29 Javascript
使用layer弹窗提交表单时判断表单是否输入为空的例子
Sep 26 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
Jul 30 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
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
php GeoIP的使用教程
2011/03/09 PHP
php把session写入数据库示例
2014/02/26 PHP
如何让thinkphp在模型中自动完成session赋值小教程
2014/09/05 PHP
php实现的双向队列类实例
2014/09/24 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
2015/11/11 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
php使用redis的几种常见操作方式和用法示例
2020/02/20 PHP
修改file按钮的默认样式实现代码
2013/04/23 Javascript
js获得参数的getParameter使用示例
2014/02/26 Javascript
使用jquery实现放大镜效果
2014/09/02 Javascript
jQuery实现拖拽页面元素并将其保存到cookie的方法
2016/06/12 Javascript
微信小程序实现图片自适应(支持多图)
2017/01/25 Javascript
webpack 2.x配置reactjs基本开发环境详解
2017/08/08 Javascript
微信小程序删除处理详解
2017/08/16 Javascript
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
js删除数组中的元素delete和splice的区别详解
2018/02/03 Javascript
详解关于JSON.parse()和JSON.stringify()的性能小测试
2019/03/14 Javascript
详解一个基于套接字实现长连接的express
2019/03/28 Javascript
微信小程序的注册页面包含倒计时验证码、获取用户信息
2019/05/22 Javascript
解决jquery validate 验证不通过后验证正确的信息仍残留在label上的方法
2019/08/27 jQuery
详解一些适用于Node.js的命名约定
2019/12/08 Javascript
[20:39]DOTA2-DPC中国联赛 正赛开幕式 1月18日
2021/03/11 DOTA
python 正则表达式 概述及常用字符
2009/05/04 Python
Python and、or以及and-or语法总结
2015/04/14 Python
Python fileinput模块使用实例
2015/05/28 Python
解决python3中自定义wsgi函数,make_server函数报错的问题
2017/11/21 Python
python pandas.DataFrame选取、修改数据最好用.loc,.iloc,.ix实现
2018/06/11 Python
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
幼儿园大班评语大全
2014/04/17 职场文书
化妆品促销活动总结
2015/05/07 职场文书
《迟到》教学反思
2016/02/24 职场文书
大学生暑期社会实践的个人总结!
2019/07/17 职场文书
python使用pywinauto驱动微信客户端实现公众号爬虫
2021/05/19 Python
vue项目多环境配置(.env)的实现
2021/07/21 Vue.js
Python中基础数据类型 set集合知识点总结
2021/08/02 Python