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动态加载图片数据练习代码
Aug 04 Javascript
11个用于提高排版水平的基于jquery的文字效果插件
Sep 14 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
Sep 28 Javascript
详解webpack编译多页面vue项目的配置问题
Dec 11 Javascript
用vue写一个仿简书的轮播图的示例代码
Mar 13 Javascript
webpack公共组件引用路径简化小技巧
Jun 15 Javascript
vue仿element实现分页器效果
Sep 13 Javascript
详解React 服务端渲染方案完美的解决方案
Dec 14 Javascript
Vue项目实现换肤功能的一种方案分析
Aug 28 Javascript
小程序简单两栏瀑布流效果的实现
Dec 18 Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
May 30 jQuery
vue单元格多列合并的实现
Nov 26 Vue.js
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
基于mysql的论坛(2)
2006/10/09 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
解读PHP的Yii框架中请求与响应的处理流程
2016/03/17 PHP
使用Laravel中的查询构造器实现增删改查功能
2019/09/03 PHP
javascript String 的扩展方法集合
2008/06/01 Javascript
js parseInt("08")未指定进位制问题
2010/06/19 Javascript
jQuery页面加载初始化常用的三种方法
2014/06/04 Javascript
jQuery函数map()和each()介绍及异同点分析
2014/11/08 Javascript
原生javascript实现简单的datagrid数据表格
2015/01/02 Javascript
解析javascript瀑布流原理实现图片滚动加载
2016/03/10 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
2016/06/03 Javascript
js获取元素的偏移量offset简单方法(必看)
2017/07/05 Javascript
jQuery Ajax 实现分页 kkpager插件实例代码
2017/08/10 jQuery
JS实现数组简单去重及数组根据对象中的元素去重操作示例
2018/01/05 Javascript
Vue中的methods、watch、computed的区别
2018/11/26 Javascript
js单线程的本质 Event Loop解析
2019/10/29 Javascript
vue中el-input绑定键盘按键(按键修饰符)
2020/07/22 Javascript
Go语言基于Socket编写服务器端与客户端通信的实例
2016/02/19 Python
python 3.5下xadmin的使用及修复源码bug
2017/05/10 Python
Pycharm 操作Django Model的简单运用方法
2018/05/23 Python
13个Pandas实用技巧,助你提高开发效率
2020/08/19 Python
python import 上级目录的导入
2020/11/03 Python
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
HTML5 transform三维立方体实现360无死角三维旋转效果
2014/08/22 HTML / CSS
Levi’s美国官网:美国著名的牛仔裤品牌
2016/08/19 全球购物
德国骆驼商店:ActiveFashionWorld
2017/11/18 全球购物
德国富尔达运动鞋店:43einhalb
2020/12/25 全球购物
高中化学教学反思
2014/01/13 职场文书
人力资源部经理的岗位职责
2014/03/04 职场文书
党建示范点实施方案
2014/03/12 职场文书
单位实习工作证明怎么写
2014/11/02 职场文书
实习科室评语
2015/01/04 职场文书
班主任远程培训研修日志
2015/11/13 职场文书
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python
python语言中pandas字符串分割str.split()函数
2022/08/05 Python