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 相关文章推荐
Javascript异步编程的4种方法让你写出更出色的程序
Jan 17 Javascript
js数组Array sort方法使用深入分析
Feb 21 Javascript
超棒的响应式布局jQuery插件Freetile.js
Nov 17 Javascript
jQuery实现的淡入淡出二级菜单效果代码
Sep 15 Javascript
举例讲解jQuery中可见性过滤选择器的使用
Apr 18 Javascript
微信小程序 页面传值详解
Mar 10 Javascript
浅谈vue+webpack项目调试方法步骤
Sep 11 Javascript
React-native桥接Android原生开发详解
Jan 17 Javascript
node结合swig渲染摸板的方法
Apr 11 Javascript
element-ui上传一张图片后隐藏上传按钮功能
May 22 Javascript
详解django模板与vue.js冲突问题
Jul 07 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
Oct 28 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中10个不常见却非常有用的函数
2010/03/21 PHP
《PHP编程最快明白》第八讲:php启发和小结
2010/11/01 PHP
ThinkPHP自动验证失败的解决方法
2011/06/09 PHP
PHP时间戳与日期之间转换的实例介绍
2013/04/19 PHP
PHP 关于访问控制的和运算符优先级介绍
2013/07/08 PHP
php处理restful请求的路由类分享
2014/02/27 PHP
PHP符合PSR编程规范的实例分享
2016/12/21 PHP
PHP设计模式之原型设计模式原理与用法分析
2018/04/25 PHP
javascript获得CheckBoxList选中的数量
2009/10/27 Javascript
js 获取子节点函数 (兼容FF与IE)
2010/04/18 Javascript
SharePoint 客户端对象模型 (一) ECMA Script
2011/05/22 Javascript
js 浏览本地文件夹系统示例代码
2013/10/24 Javascript
nodejs中使用monk访问mongodb
2014/07/06 NodeJs
一看就懂:jsonp详解
2015/06/01 Javascript
javascript日期操作详解(脚本之家整理)
2015/09/05 Javascript
js事件驱动机制 浏览器兼容处理方法
2016/07/23 Javascript
总结Node.js中的一些错误类型
2016/08/15 Javascript
underscore之function_动力节点Java学院整理
2017/07/11 Javascript
轻松解决JavaScript定时器越走越快的问题
2019/05/13 Javascript
使用Layer组件弹出多个对话框(非嵌套)与关闭及刷新的例子
2019/09/25 Javascript
Python采用raw_input读取输入值的方法
2014/08/18 Python
python爬虫入门教程之糗百图片爬虫代码分享
2014/09/02 Python
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
简单了解Django ORM常用字段类型及参数配置
2020/01/07 Python
Python多线程通信queue队列用法实例分析
2020/03/24 Python
python给视频添加背景音乐并改变音量的具体方法
2020/07/19 Python
Python 实现进度条的六种方式
2021/01/06 Python
美国最大的团购网站:Groupon
2016/07/23 全球购物
白俄罗斯在线大型超市:e-dostavka.by
2019/07/25 全球购物
Ray-Ban雷朋瑞典官方网站:全球领先的太阳眼镜品牌
2019/08/22 全球购物
个人应聘自我评价分享
2013/11/18 职场文书
销售部主管岗位职责
2013/12/18 职场文书
事务机电主管工作职责
2014/02/25 职场文书
大学生活动总结模板
2014/07/02 职场文书
贷款收入证明格式
2015/06/24 职场文书
JavaScript实现优先级队列
2021/12/06 Javascript