jQuery中JSONP的两种实现方式详解


Posted in Javascript onSeptember 26, 2016

前台代码如下:

jQuery中JSONP的两种实现方式详解

后台Action代码如下:

jQuery中JSONP的两种实现方式详解

运行后就可以看到结果了。我追踪了下后台ProcessCallback代码,如下图:

jQuery中JSONP的两种实现方式详解

可以看到jsonCallback的值为"jQuery17104721....",它是前端传给远程服务器后台Action的。这里 jQuery171..表示的是jQuery的版本,可以简单地将这个理解为JSONP类型请求回调函数,jQuery在我们每次指定Ajax请求方式为 JSONP时都会生成这么一个JSONP回调函数。虽然jQuery会自动帮我们生成一个回调函数,但是我们也可以通过设置 jsonpCallback 参数为jsonp请求定制一个我们自己的回调函数。

第一种方式下面这三行代码设定了JSONP请求方式:

dataType: "jsonp",

jsonp: "jsonpcallback",// 指定回调函数,这里名字可以为其他任意你喜欢的,比如callback,不过必须与下一行的GET参数一致

data: "name=jxq&email=feichexia@yahoo.com.cn&jsonpcallback=?", // jsonpcallback与上面的jsonp值一致

第二种方式则直接在GET参数后面带上jsonpcallback=?来标识。

我们可以推断这么做以后,jQuery内部机制就帮我们绕过了浏览器的跨域访问限制,然后就可以像正常请求同域Action一样请求跨域Action了。

最后返回的是一个函数表达式:

return jsonCallback + "(" + new JavaScriptSerializer().Serialize(user) + ")";

这样返回给前端的就是类似这种jQuery17104721....('{Name:"jxq", Email:"feichexia@yahoo.com.cn"}'),它一返回到前端就会执行,得到的是一个JavaScript对象,对象有两个属 性:Name和Email,所以我们可以直接调用json.Name和json.Email

通过此文,希望能帮助大家学习掌握此部分知识,谢谢大家对本站的支持!

Javascript 相关文章推荐
jquery text()要注意啦
Oct 30 Javascript
扩展jquery实现客户端表格的分页、排序功能代码
Mar 16 Javascript
jQuery 源码分析笔记(2) 变量列表
May 28 Javascript
JavaScript调用堆栈及setTimeout使用方法深入剖析
Feb 16 Javascript
jQuery动态显示和隐藏datagrid中的某一列的方法
Dec 11 Javascript
JS实现来回出现文字的状态栏特效代码
Oct 31 Javascript
Angular Module声明和获取重载实例代码
Sep 14 Javascript
详解ES6中的let命令
Apr 05 Javascript
Linux使用Node.js建立访问静态网页的服务实例详解
Mar 21 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
Nov 17 Javascript
微信小程序实现单选功能
Oct 30 Javascript
基于vue-cli 路由 实现类似tab切换效果(vue 2.0)
May 08 Javascript
javascript的函数劫持浅析
Sep 26 #Javascript
JavaScript中this的四个绑定规则总结
Sep 26 #Javascript
jQuery 选择器(61种)整理总结
Sep 26 #Javascript
jQuery tagsinput在h5邮件客户端中应用详解
Sep 26 #Javascript
Windows环境下npm install 报错: operation not permitted, rename的解决方法
Sep 26 #Javascript
几句话带你理解JS中的this、闭包、原型链
Sep 26 #Javascript
BootStrap下拉菜单和滚动监听插件实现代码
Sep 26 #Javascript
You might like
PHP实现文件安全下载
2006/10/09 PHP
php str_pad 函数使用详解
2009/01/13 PHP
mantis安装、配置和使用中的问题小结
2014/07/14 PHP
php之static静态属性与静态方法实例分析
2015/07/30 PHP
PHP编写RESTful接口的方法
2016/02/21 PHP
JS request函数 用来获取url参数
2010/05/17 Javascript
jQuery的实现原理的模拟代码 -1 核心部分
2010/08/01 Javascript
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
前台js改变Session的值(用ajax实现)
2012/12/28 Javascript
输入框过滤非数字的js代码
2014/09/18 Javascript
JQuery中模拟image的ajaxPrefilter与ajaxTransport处理
2015/06/19 Javascript
jQuery1.9.1源码分析系列(十六)ajax之ajax框架
2015/12/04 Javascript
BOM系列第二篇之定时器requestAnimationFrame
2016/08/17 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
js学习总结_选项卡封装(实例讲解)
2017/07/13 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
2019/02/13 Javascript
微信小程序版本自动更新的方法
2019/06/14 Javascript
vue解决使用$http获取数据时报错的问题
2019/10/30 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
2020/03/04 Javascript
JavaScript大数相加相乘的实现方法实例
2020/10/18 Javascript
python实现的简单文本类游戏实例
2015/04/28 Python
Python实现的绘制三维双螺旋线图形功能示例
2018/06/23 Python
python设置环境变量的原因和方法
2019/06/24 Python
python实现的批量分析xml标签中各个类别个数功能示例
2019/12/30 Python
翻转数列python实现,求前n项和,并能输出整个数列的案例
2020/05/03 Python
python利用线程实现多任务
2020/09/18 Python
CSS3 简单又实用的5个属性
2010/03/04 HTML / CSS
DHC中国官方购物网站:日本通信销售No.1化妆品
2016/08/20 全球购物
亚洲航空公司官方网站:AirAsia
2019/11/25 全球购物
会计电算化学生个人的自我评价
2014/02/08 职场文书
高级编程求职信模板
2014/02/16 职场文书
个人评语大全
2014/05/04 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书
金砖之国观后感
2015/06/11 职场文书
2019大学生社会实践报告汇总
2019/08/16 职场文书
解决golang在import自己的包报错的问题
2021/04/29 Golang