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学习笔记5 类和对象
Jan 11 Javascript
js Function类型
Dec 04 Javascript
快速查找数组中的某个元素并返回下标示例
Sep 03 Javascript
JavaScript function 的 length 属性使用介绍
Sep 15 Javascript
JavaScript获得url查询参数的方法
Jul 02 Javascript
JSONP跨域请求实例详解
Jul 04 Javascript
常用Javascript函数与原型功能收藏(必看篇)
Oct 09 Javascript
详解Eslint 配置及规则说明
Sep 10 Javascript
vue实现父子组件之间的通信以及兄弟组件的通信功能示例
Jan 29 Javascript
vue 插件的方法代码详解
Jun 06 Javascript
深入理解Vue keep-alive及实践总结
Aug 21 Javascript
javascript对象3个属性特征
Nov 17 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
西德产收音机
2021/03/01 无线电
制作美丽的拉花
2021/03/03 冲泡冲煮
php 购物车的例子
2009/05/04 PHP
php中使用ExcelFileParser处理excel获得数据(可作批量导入到数据库使用)
2010/08/21 PHP
PHP下判断网址是否有效的代码
2011/10/08 PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
2014/12/22 PHP
PHP的mysqli_set_charset()函数讲解
2019/01/23 PHP
基于jQuery的动态表格插件
2011/03/28 Javascript
EXTjs4.0的store的findRecord的BUG演示代码
2013/06/08 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
JS随机洗牌算法之数组随机排序
2016/03/23 Javascript
vue微信分享 vue实现当前页面分享其他页面
2017/12/02 Javascript
Vue 自适应高度表格的实现方法
2020/05/13 Javascript
[17:00]DOTA2 HEROS教学视频教你分分钟做大人-帕克
2014/06/10 DOTA
python2.7删除文件夹和删除文件代码实例
2013/12/18 Python
python正则表达式match和search用法实例
2015/03/26 Python
python 进程 进程池 进程间通信实现解析
2019/08/23 Python
给你一面国旗 教你用python画中国国旗
2019/09/24 Python
你还在@微信官方?聊聊Python生成你想要的微信头像
2019/09/25 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
Python之——生成动态路由轨迹图的实例
2019/11/22 Python
Jupyter Notebook 安装配置与使用详解
2021/01/06 Python
CSS实现圆形放大镜狙击镜效果 只有圆圈里的放大
2012/12/10 HTML / CSS
利用css3-animation实现逐帧动画效果
2016/03/10 HTML / CSS
详解canvas绘制网络字体几种方法
2019/08/27 HTML / CSS
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
专门经营化妆刷的美国彩妆品牌:Sigma Beauty
2017/09/11 全球购物
英国IT硬件供应商,定制游戏PC:Mesh Computers
2019/03/28 全球购物
拾金不昧的表扬信
2014/01/16 职场文书
新年爱情寄语
2014/04/08 职场文书
白酒代理协议书范本
2014/10/26 职场文书
群众路线教育实践活动调研报告
2014/11/03 职场文书
北京英语导游词
2015/02/12 职场文书
焦点访谈观后感
2015/06/11 职场文书
高中生物教学反思
2016/02/20 职场文书
解决Python保存文件名太长OSError: [Errno 36] File name too long
2022/05/11 Python