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 相关文章推荐
判断目标是否是window,document,和拥有tagName的Element的代码
May 31 Javascript
JSON传递bool类型数据的处理方式介绍
Sep 18 Javascript
JavaScript中instanceof运算符的用法总结
Nov 19 Javascript
JSONP获取Twitter和Facebook文章数的具体步骤
Feb 24 Javascript
原生js实现移动开发轮播图、相册滑动特效
Apr 17 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
Aug 20 Javascript
JavaScript日期选择功能示例
Jan 16 Javascript
js从输入框读取内容,比较两个数字的大小方法
Mar 13 Javascript
BootStrap表单控件之复选框checkbox和单选择按钮radio
May 23 Javascript
express框架实现基于Websocket建立的简易聊天室
Aug 10 Javascript
vue表单中遍历表单操作按钮的显示隐藏示例
Oct 30 Javascript
利用JavaScript写一个简单计算器
Nov 27 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
咖啡的植物学知识
2021/03/03 咖啡文化
PHP生成Flash动画的实现代码
2010/03/12 PHP
PHP使用POP3读取邮箱接收邮件的示例代码
2020/07/08 PHP
javascript页面倒计时实例
2015/07/25 Javascript
js 右侧浮动层效果实现代码(跟随滚动)
2015/11/22 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
JS遍历页面所有对象属性及实现方法
2016/08/01 Javascript
jQuery的deferred对象使用详解
2016/09/25 Javascript
iOS和Android用同一个二维码实现跳转下载链接的方法
2016/09/28 Javascript
bootstrap读书笔记之CSS组件(上)
2016/10/17 Javascript
快速入门Vue
2016/12/19 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
基于pako.js实现gzip的压缩和解压功能示例
2017/06/13 Javascript
VsCode插件整理(小结)
2017/09/14 Javascript
利用JS hash制作单页Web应用的方法详解
2017/10/10 Javascript
判断iOS、Android以及PC端的示例代码
2018/11/15 Javascript
Vue2.0实现组件之间数据交互和通信操作示例
2019/05/16 Javascript
vue 实现锚点功能操作
2020/08/10 Javascript
JavaScript中交换值的10种方法总结
2020/08/18 Javascript
如何编写一个 Webpack Loader的实现
2020/10/18 Javascript
[02:12]Dota 2 推出全新英雄—— 电炎绝手
2019/08/23 DOTA
基于python的汉字转GBK码实现代码
2012/02/19 Python
Python编程实现的简单神经网络算法示例
2018/01/26 Python
利用python 更新ssh 远程代码 操作远程服务器的实现代码
2018/02/08 Python
pandas 缺失值与空值处理的实现方法
2019/10/12 Python
python3 Scrapy爬虫框架ip代理配置的方法
2020/01/17 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
CSS3实现简易版的刮刮乐效果
2016/09/27 HTML / CSS
HTML5印章绘制电子签章图片(中文英文椭圆章、中文英文椭圆印章)
2019/06/03 HTML / CSS
html5 利用canvas实现超级玛丽简单动画
2013/09/06 HTML / CSS
BabyBjörn婴儿背带法国官网:BabyBjorn法国
2018/06/16 全球购物
2014法制宣传日活动总结
2014/07/09 职场文书
2014年学生会工作总结
2014/11/07 职场文书
学校后勤工作总结2015
2015/05/15 职场文书
邹越演讲观后感
2015/06/15 职场文书