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 相关文章推荐
js实现GridView单选效果自动设置交替行、选中行、鼠标移动行背景色
May 27 Javascript
jQuery源码分析-01总体架构分析
Nov 14 Javascript
javascript 进阶篇2 CSS XML学习
Mar 14 Javascript
js解析xml字符串和xml文档实现原理及代码(针对ie与火狐)
Feb 02 Javascript
vue开发心得和技巧分享
Oct 27 Javascript
jQuery Ajax向服务端传递数组参数值的实例代码
Sep 03 jQuery
bootstrap可编辑下拉框jquery.editable-select
Oct 12 jQuery
JQuery 又谈ajax局部刷新
Nov 27 jQuery
Vue 按键修饰符处理事件的方法
May 04 Javascript
微信小程序 多行文本显示...+显示更多按钮和收起更多按钮功能
Sep 26 Javascript
JS+CSS实现炫酷光感效果
Sep 05 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
Feb 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
基于asp+ajax和数据库驱动的二级联动菜单
2010/05/06 PHP
php 模拟get_headers函数的代码示例
2013/04/27 PHP
php实现的返回数据格式化类实例
2014/09/22 PHP
php中opendir函数用法实例
2014/11/15 PHP
thinkphp利用模型通用数据编辑添加和删除的实例代码
2016/11/20 PHP
jquery 插件学习(一)
2012/08/06 Javascript
jquery控制select的text/value值为选中状态
2014/06/03 Javascript
PHPExcel中的一些常用方法汇总
2015/01/23 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
JavaScript sort数组排序方法和自我实现排序方法小结
2016/06/06 Javascript
jQuery插件简单学习实例教程
2016/07/01 Javascript
JS对HTML表格进行增删改操作
2016/08/22 Javascript
基于JavaScript实现熔岩灯效果导航菜单
2017/01/04 Javascript
AngularJS ng-repeat指令及Ajax的应用实例分析
2017/07/06 Javascript
React进阶学习之组件的解耦之道
2017/08/07 Javascript
javascript高级模块化require.js的具体使用方法
2017/10/31 Javascript
解决vue中无法动态修改jqgrid组件 url地址的问题
2018/03/01 Javascript
解决element UI 自定义传参的问题
2018/08/22 Javascript
js 使用ajax设置和获取自定义header信息的方法小结
2020/03/12 Javascript
微信小程序 获取手机号 JavaScript解密示例代码详解
2020/05/14 Javascript
python实现的二叉树算法和kmp算法实例
2014/04/25 Python
Python DataFrame 设置输出不显示index(索引)值的方法
2018/06/07 Python
Django unittest 设置跳过某些case的方法
2018/12/26 Python
详细介绍pandas的DataFrame的append方法使用
2019/07/31 Python
Django框架 Pagination分页实现代码实例
2019/09/04 Python
python3下pygame如何实现显示中文
2020/01/11 Python
python 6.7 编写printTable()函数表格打印(完整代码)
2020/03/25 Python
Python3.7安装pyaudio教程解析
2020/07/24 Python
python统计mysql数据量变化并调用接口告警的示例代码
2020/09/21 Python
详解FireFox下Canvas使用图像合成绘制SVG的Bug
2019/07/10 HTML / CSS
班主任工作经验交流材料
2014/05/13 职场文书
节水口号标语
2014/06/19 职场文书
2014年采购员工作总结
2014/11/18 职场文书
秦兵马俑导游词
2015/02/02 职场文书
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP
室外天线与收音机天线杆接合方法
2022/04/05 无线电