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 相关文章推荐
初学Javascript的一些总结
Nov 03 Javascript
asp.net HttpHandler实现图片防盗链
Nov 09 Javascript
javascript scrollTop正解使用方法
Nov 14 Javascript
document.compatMode的CSS1compat使用介绍
Apr 03 Javascript
Angularjs中UI Router的使用方法
May 14 Javascript
jQuery中select与datalist制作下拉菜单时的区别浅析
Dec 30 Javascript
BootStrapTable 单选及取值的实现方法
Jan 10 Javascript
浅谈使用React.setState需要注意的三点
Dec 18 Javascript
微信小程序中使用ECharts 异步加载数据实现图表功能
Jul 13 Javascript
vue实现城市列表选择功能
Jul 16 Javascript
Bootstrap-table使用footerFormatter做统计列功能
Sep 07 Javascript
jQuery实现数字华容道小游戏(实例代码)
Jan 16 jQuery
动态创建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
php下实现折线图效果的代码
2007/04/28 PHP
PHP以及MYSQL日期比较方法
2012/11/29 PHP
php查看当前Session的ID实例
2015/03/16 PHP
CI分页类首页、尾页不显示的解决方法
2016/03/28 PHP
php使用str_replace替换多维数组的实现方法分析
2017/06/15 PHP
Laravel 类和接口注入相关的代码
2019/10/15 PHP
JavaScript 学习笔记(十六) js事件
2010/02/01 Javascript
jquery 新手学习常见问题解决方法
2010/04/18 Javascript
javascript 处理null及null值示例
2014/06/09 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
AngularJS学习笔记之TodoMVC的分析
2015/02/22 Javascript
JavaScript给按钮绑定点击事件(onclick)的方法
2015/04/07 Javascript
JS建造者模式基本用法实例分析
2015/06/30 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
RequireJS使用注意细节
2016/05/15 Javascript
JS及PHP代码编写八大排序算法
2016/07/12 Javascript
AngularJS 中的事件详解
2016/07/28 Javascript
js实现滑动到页面底部自动加载更多功能
2017/02/15 Javascript
vue-router 权限控制的示例代码
2017/09/21 Javascript
微信小程序如何获取openid及用户信息
2018/01/26 Javascript
JavaScript日期工具类DateUtils定义与用法示例
2018/09/03 Javascript
vue prop属性传值与传引用示例
2019/11/13 Javascript
Python脚本实现代码行数统计代码分享
2015/03/10 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
2015/08/07 Python
深入解析Python中的descriptor描述器的作用及用法
2016/06/27 Python
Python中的集合介绍
2019/01/28 Python
详解Python中的各种转义符\n\r\t
2019/07/10 Python
Windows下Anaconda和PyCharm的安装与使用详解
2020/04/23 Python
django创建超级用户时指定添加其它字段方式
2020/05/14 Python
用python发送微信消息
2020/12/21 Python
现代家居用品及礼品:LBC Modern
2018/06/24 全球购物
敬老文明号事迹材料
2014/01/16 职场文书
社会实践评语
2014/04/28 职场文书
2014年检察院个人工作总结
2014/12/09 职场文书
三方协议书
2015/01/27 职场文书
golang通过递归遍历生成树状结构的操作
2021/04/28 Golang