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代码必备[js多浏览器兼容写法]
Oct 29 Javascript
JS下拉框内容左右移动效果的具体实现
Jul 10 Javascript
js获取电脑分辨率的思路及操作
Nov 22 Javascript
js调试系列 源码定位与调试[基础篇]
Jun 18 Javascript
在JS方法中返回多个值的方法汇总
May 20 Javascript
jQuery实现的手机发送验证码倒计时效果代码分享
Aug 24 Javascript
jQuery Easyui 验证两次密码输入是否相等
May 13 Javascript
w3c编程挑战_初级脚本算法实战篇
Jun 23 Javascript
iView-admin 动态路由问题的解决方法
Oct 03 Javascript
vue发送websocket请求和http post请求的实例代码
Jul 11 Javascript
Vue实现将数据库中带html标签的内容输出(原始HTML(Raw HTML))
Oct 28 Javascript
深入了解Vue动态组件和异步组件
Jan 26 Vue.js
动态创建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 网页播放器用来播放在线视频的代码(自动判断并选择视频文件类型)
2010/06/03 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
Zend Framework教程之路由功能Zend_Controller_Router详解
2016/03/07 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
setTimeout 不断吐食CPU的问题分析
2009/04/01 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
AngularJs $parse、$eval和$observe、$watch详解
2016/09/21 Javascript
javascript数组去重常用方法实例分析
2017/04/11 Javascript
JavaScript中Object基础内部方法图
2018/02/05 Javascript
JavaScript实现的DOM树遍历方法详解【二叉DOM树、多叉DOM树】
2018/05/07 Javascript
100行代码实现一个vue分页组功能
2018/11/06 Javascript
js字符串倒序的实例代码
2018/11/30 Javascript
微信小程序实现两个页面传值的方法分析
2018/12/11 Javascript
vue2之简易的pc端短信验证码的问题及处理方法
2019/06/03 Javascript
从零撸一个pc端vue的ui组件库( 计数器组件 )
2019/08/08 Javascript
vue实现修改图片后实时更新
2019/11/14 Javascript
使用React-Router实现前端路由鉴权的示例代码
2020/07/26 Javascript
jQuery实现购物车全功能
2021/01/11 jQuery
[03:27]最受玩家喜爱奖提名:PZH_Element 致玩家寄语
2016/12/20 DOTA
Python中type的构造函数参数含义说明
2015/06/21 Python
关于Python作用域自学总结
2019/06/10 Python
Python configparser模块配置文件过程解析
2020/03/03 Python
pycharm下pyqt4安装及环境配置的教程
2020/04/24 Python
python 利用toapi库自动生成api
2020/10/19 Python
英国度假别墅预订:Sykes Cottages
2017/06/12 全球购物
美国和加拿大房车出售在线分类广告:RVT.com
2018/04/23 全球购物
如何清空Session
2015/02/23 面试题
酒店管理专业毕业生推荐信
2013/11/10 职场文书
婚礼证婚人证婚词
2014/01/08 职场文书
保安的辞职报告怎么写
2014/01/20 职场文书
中学生逃课检讨书
2015/02/17 职场文书
大学生违纪检讨书范文
2015/05/07 职场文书
2016春节放假通知范文
2015/08/18 职场文书
2016秋季幼儿园开学寄语
2015/12/03 职场文书
我的暑假生活作文(五年级)范文
2019/08/07 职场文书
据Python爬虫不靠谱预测可知今年双十一销售额将超过6000亿元
2021/11/11 Python