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 08 Javascript
关于URL中的特殊符号使用介绍
Nov 03 Javascript
javascript判断机器是否联网的2种方法
Aug 09 Javascript
JS中的THIS和WINDOW.EVENT.SRCELEMENT详解
May 25 Javascript
浅谈jquery上下滑动的注意事项
Oct 13 Javascript
JS访问DOM节点方法详解
Nov 29 Javascript
Angularjs单选改为多选的开发过程及问题解析
Feb 17 Javascript
浅谈es6中export和export default的作用及区别
Feb 07 Javascript
react 兄弟组件如何调用对方的方法示例
Oct 23 Javascript
electron + vue项目实现打印小票功能及实现代码
Nov 25 Javascript
Ajax请求时无法重定向的问题解决代码详解
Jun 21 Javascript
微信小程序 (地址选择1)--选取搜索地点并显示效果
Dec 17 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
PHP循环语句笔记(foreach,list)
2011/11/29 PHP
修改php.ini以达到屏蔽错误信息并记录日志
2013/06/16 PHP
yii实现CheckBox复选框在同一行显示的方法
2014/12/03 PHP
php mysql获取表字段名称和字段信息的三种方法
2016/11/13 PHP
php中的依赖注入实例详解
2019/08/14 PHP
laravel中数据显示方法(默认值和下拉option默认选中)
2019/10/11 PHP
JavaScript原生对象之String对象的属性和方法详解
2015/03/13 Javascript
Spring mvc 接收json对象
2015/12/10 Javascript
基于jQuery实现点击最后一行实现行自增效果的表格
2016/01/12 Javascript
Struts2+jquery.form.js实现图片与文件上传的方法
2016/05/05 Javascript
JS实现可编辑的后台管理菜单功能【附demo源码下载】
2016/09/13 Javascript
理解JavaScript原型链
2016/10/25 Javascript
Bootstrap CSS布局之图像
2016/12/17 Javascript
基于javaScript的this指向总结
2017/07/22 Javascript
Layui 导航默认展开和菜单栏选中高亮设置的方法
2019/09/04 Javascript
JavaScript定时器使用方法详解
2020/03/26 Javascript
[03:22]DAC最前线(第二期)—DOTA2亚洲邀请赛主赛场周边及线路探访
2015/01/24 DOTA
简单讲解Python编程中namedtuple类的用法
2016/06/21 Python
利用标准库fractions模块让Python支持分数类型的方法详解
2017/08/11 Python
使用python中的in ,not in来检查元素是不是在列表中的方法
2018/07/06 Python
pygame实现俄罗斯方块游戏(AI篇1)
2019/10/29 Python
python wav模块获取采样率 采样点声道量化位数(实例代码)
2020/01/22 Python
PyQt5连接MySQL及QMYSQL driver not loaded错误解决
2020/04/29 Python
简单介绍HTML5中audio标签的使用
2015/09/24 HTML / CSS
惠普美国官方商店:HP Official Store
2016/08/28 全球购物
奥兰多迪士尼门票折扣:Undercover Tourist
2018/07/09 全球购物
教师的实习自我鉴定
2013/12/17 职场文书
数控个人求职信范文
2014/02/03 职场文书
中式婚礼主持词
2014/03/13 职场文书
党员干部承诺书范文
2014/03/25 职场文书
幼儿园运动会口号
2014/06/07 职场文书
见习报告的格式
2014/10/31 职场文书
小学教师个人总结
2015/02/05 职场文书
python urllib库的使用详解
2021/04/13 Python
pytorch 中autograd.grad()函数的用法说明
2021/05/12 Python
python游戏开发Pygame框架
2022/04/22 Python