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 相关文章推荐
IE浏览器兼容Firefox的JS脚本的代码
Oct 23 Javascript
ExtJS TabPanel beforeremove beforeclose使用说明
Mar 31 Javascript
js以对象为索引的关联数组
Jul 04 Javascript
选择复选框按钮置灰否则按钮可用
May 22 Javascript
PhotoShop给图片自动添加边框及EXIF信息的JS脚本
Feb 15 Javascript
js实现键盘Enter键提交表单的方法
May 27 Javascript
JS常见问题之为什么点击弹出的i总是最后一个
Jan 05 Javascript
基于jquery编写分页插件
Mar 07 Javascript
原生js三级联动的简单实现代码
Jun 07 Javascript
jQuery插件FusionCharts实现的3D帕累托图效果示例【附demo源码】
Mar 25 jQuery
react-native 完整实现登录功能的示例代码
Sep 11 Javascript
vue组件watch属性实例讲解
Nov 07 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
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
php获取根域名方法汇总
2014/10/28 PHP
php对文件夹进行相关操作(遍历、计算大小)
2015/11/04 PHP
JS日历 推荐
2006/12/03 Javascript
JavaScript 异步调用框架 (Part 4 - 链式调用)
2009/08/04 Javascript
JavaScript 利用Cookie记录用户登录信息
2009/12/08 Javascript
javascript入门基础之私有变量
2010/02/23 Javascript
用js来定义浏览器中一个左右浮动元素相对于页面主体宽度的位置的函数
2012/01/21 Javascript
用JS提交参数创建form表单在FireFox中遇到的问题
2013/01/16 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
JavaScript中SetInterval与setTimeout的用法详解
2015/11/10 Javascript
JavaScript实现公历转农历功能示例
2017/02/13 Javascript
分析JS中this引发的bug
2017/12/12 Javascript
arctext.js实现文字平滑弯曲弧形效果的插件
2019/05/13 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
vue前后分离调起微信支付
2019/07/29 Javascript
原生js实现贪食蛇小游戏的思路详解
2019/11/26 Javascript
Vue proxyTable配置多个接口地址,解决跨域的问题
2020/09/11 Javascript
Python时区设置方法与pytz查询时区教程
2013/11/27 Python
Python基础之函数用法实例详解
2014/09/10 Python
Python的爬虫程序编写框架Scrapy入门学习教程
2016/07/02 Python
Flask框架WTForm表单用法示例
2018/07/20 Python
Python编写合并字典并实现敏感目录的小脚本
2019/02/26 Python
python里运用私有属性和方法总结
2019/07/08 Python
Python 排序最长英文单词链(列表中前一个单词末字母是下一个单词的首字母)
2020/12/14 Python
Bogner美国官网:滑雪服中的”Dior”
2018/01/30 全球购物
通往英国高街的商店橱窗:Down Your High Street
2020/07/19 全球购物
播音主持专业个人自我评价
2014/01/09 职场文书
项目施工员岗位职责
2014/03/09 职场文书
颁奖晚会主持词
2014/03/25 职场文书
股份合作协议书
2014/09/10 职场文书
副总经理党的群众路线教育实践活动个人对照检查材料思想汇报
2014/10/06 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
Nginx设置日志打印post请求参数的方法
2021/03/31 Servers
Python列表删除重复元素与图像相似度判断及删除实例代码
2021/05/07 Python
nginx 配置缓存
2022/05/11 Servers