jquery中的ajax方法怎样通过JSONP进行远程调用


Posted in Javascript onMay 04, 2014

关于JSONP的概念和为什么要使用JSONP网上已经有很多教程,这一节主要演示下在JQUERY中的ajax方法怎样通过JSONP进行远程调用

首先介绍下$.ajax的参数

type:请求方式 GET/POST

url:请求地址

async:布尔类型,默认为true 表示请求是否为异步,如果为false表示为同步。

dataType:返回的数据类型

jsonp:传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)

jsonpCallback:自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据

success:调用成功执行的函数

error:异常处理函数

1.示例1

服务器端我们采用MVC的ACTION来返回数据

public class HomeController : Controller 
{ 
// 
// GET: /Home/ public ActionResult Index() 
{ 
returnView(); 
} 
public ActionResult ReturnJson() 
{ 
string callback = Request.QueryString["callback"]; 
string json = "{'name':'张三','age':'20'}"; 
string result = string.Format("{0}({1})", callback, json); 
returnContent(result); 
} 
}

客户端使用jsonp来传输数据
@{ 
ViewBag.Title = "Index"; 
Layout = "~/Views/Shared/_Layout.cshtml"; 
} <script src="~/Scripts/jquery-1.7.1.min.js"type="text/javascript"> </script> 
<script type="text/javascript"> 
functionSendData() 
{ 
$.ajax({ 
type: "get", 
async: false, 
url: "/home/ReturnJson", 
dataType: "jsonp", 
success: function(data){ 
alert(data.name); 
}, 
error: function(){ 
alert('fail'); 
} 
}); 
} 
</script> 
<input type="button" value="提交" onclick="SendData();"/>

点击提交按钮后,发现服务器端的Request.QueryString["callback"]返回一个随机函数名。这样就被设置成JSONP格式来传递数据了

2.自定义函数名

可以在传递过程中自定义函数名,只要使用jsonpCallback参数就可以了。

jsonp:表示传递的参数,默认为callback,我们也可以自定义,服务器段通过此参数,获取自定义的函数名称,服务器这样获取 Request.QueryString["callback"]

jsonpCallback表示传递的参数值,也就是回调的函数名称,这是自定义的名称。

<script type="text/javascript"> 
functionSendData() { 
$.ajax({ 
type: "get", 
async: false, 
url: "/home/ReturnJson", 
dataType: "jsonp", 
jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback) 
jsonpCallback: "receive",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据 
success: function(data) { 
alert(data.name); 
}, 
error: function() { 
alert('fail'); 
} 
}); 
} functionreceive(data) { 
alert(data.age); 
} 
</script>
Javascript 相关文章推荐
Jquery实战_读书笔记1—选择jQuery
Jan 22 Javascript
JavaScript中关于indexOf的使用方法与问题小结
Aug 05 Javascript
jQuery表格行换色的三种实现方法
Jun 27 Javascript
JQuery插件Style定制化方法的分析与比较
May 03 Javascript
表单的焦点顺序tabindex和对应enter键提交
Jan 04 Javascript
JS将表单导出成EXCEL的实例代码
Nov 11 Javascript
原生js实现淘宝首页点击按钮缓慢回到顶部效果
Apr 06 Javascript
bootstrap的常用组件和栅格式布局详解
May 02 Javascript
详解Vue.js搭建路由报错 router.map is not a function
Jun 27 Javascript
vue router总结 $router和$route及router与 router与route区别
Jul 05 Javascript
使用JS location实现搜索框历史记录功能
Dec 23 Javascript
微信小程序实现发微博功能的示例代码
Jun 24 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
May 04 #Javascript
将HTML的左右尖括号等转义成实体形式的两种实现方式
May 04 #Javascript
IE6-8中Date不支持toISOString的修复方法
May 04 #Javascript
元素未显示设置width/height时IE中使用currentStyle获取为auto
May 04 #Javascript
JavaScript获取图片的原始尺寸以宽度为例
May 04 #Javascript
使用JavaScript判断图片是否加载完成的三种实现方式
May 04 #Javascript
使用JavaScript获取电池状态的方法
May 03 #Javascript
You might like
IIS php环境配置PHP5 MySQL5 ZendOptimizer phpmyadmin安装与配置
2008/11/18 PHP
php函数间的参数传递(值传递/引用传递)
2013/09/23 PHP
WordPress中获取页面链接和标题的相关PHP函数用法解析
2015/12/17 PHP
yii2中添加验证码的实现方法
2016/01/09 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
2016/01/14 PHP
Laravel 5使用Laravel Excel实现Excel/CSV文件导入导出的功能详解
2017/10/11 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
AutoSave/自动存储功能实现
2007/03/24 Javascript
在IE中调用javascript打开Excel的代码(downmoon原作)
2007/04/02 Javascript
高性能Javascript笔记 数据的存储与访问性能优化
2012/08/02 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
对table和ul实现js分页示例分享
2014/02/24 Javascript
浅谈javascript中的DOM方法
2015/07/16 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
Web性能优化系列 10个提升JavaScript性能的技巧
2016/09/27 Javascript
JavaScript模拟实现封装的三种方式及写法区别
2017/10/27 Javascript
angularJs使用ng-repeat遍历后选中某一个的方法
2018/09/30 Javascript
jQuery操作事件完整实例分析
2020/01/10 jQuery
js利用iframe实现选项卡效果
2020/08/09 Javascript
OpenLayers3实现地图显示功能
2020/09/25 Javascript
Vant 中的Toast设置全局的延迟时间操作
2020/11/04 Javascript
vue router-link 默认a标签去除下划线的实现
2020/11/06 Javascript
python 公共方法汇总解析
2019/09/16 Python
python使用socket 先读取长度,在读取报文内容示例
2019/09/26 Python
亚瑟士美国官网:ASICS美国
2017/02/01 全球购物
迪斯尼假期(欧洲、中东及非洲):Disney Holidays EMEA
2021/02/15 全球购物
简述安装Slackware Linux系统的过程
2012/05/08 面试题
经济管理专业毕业生自荐信范文
2014/01/02 职场文书
银行存款证明样本
2014/01/17 职场文书
《邮票齿孔的故事》教学反思
2014/02/22 职场文书
高三毕业评语
2014/12/31 职场文书
2016年区委书记抓基层党建工作公开承诺书
2016/03/25 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
python自动化测试通过日志3分钟定位bug
2021/11/20 Python
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android