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 相关文章推荐
Prototype源码浅析 String部分(四)之补充
Jan 16 Javascript
js jq 单击和双击区分示例介绍
Nov 05 Javascript
使用Chart.js图表库制作漂亮的响应式表单
Oct 28 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
Mar 02 Javascript
BootStrap制作导航条实例代码
May 06 Javascript
全面了解JavaScript对象进阶
Jul 19 Javascript
原生js实现返回顶部缓冲效果
Jan 18 Javascript
从对象列表中获取一个对象的方法,依据关键字和值
Sep 20 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
Oct 19 Javascript
jQuery实现百度图片移入移出内容提示框上下左右移动的效果
Jun 05 jQuery
JS滚轮控制图片缩放大小和拖动的实例代码
Nov 20 Javascript
JS实现简易图片自动轮播
Oct 16 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的日期与时间函数技巧
2008/04/24 PHP
PHP产生不重复随机数的5个方法总结
2014/11/12 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
[对联广告] JS脚本类
2006/08/27 Javascript
IE之动态添加DOM节点触发window.resize事件
2010/07/27 Javascript
Jquery 表格合并的问题分享
2011/09/17 Javascript
jQuery点击后一组图片左右滑动的实现代码
2012/08/16 Javascript
Jquery选择器中使用变量实现动态选择例子
2014/07/25 Javascript
使用不同的方法结合/合并两个JS数组
2014/09/18 Javascript
jQuery AJAX timeout 超时问题详解
2016/06/21 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
JavaScript原型继承_动力节点Java学院整理
2017/06/30 Javascript
实现图片首尾平滑轮播(JS原生方法—节流)
2017/10/17 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
浅析vue-cli3配置webpack-bundle-analyzer插件【推荐】
2019/10/23 Javascript
基于 Vue 的 Electron 项目搭建过程图文详解
2020/07/22 Javascript
python thread 并发且顺序运行示例
2009/04/09 Python
Python 函数基础知识汇总
2018/03/09 Python
python3下实现搜狗AI API的代码示例
2018/04/10 Python
详解Python中的正则表达式
2018/07/08 Python
Python Selenium 之数据驱动测试的实现
2019/08/01 Python
基于python实现把图片转换成素描
2019/11/13 Python
python实现高斯判别分析算法的例子
2019/12/09 Python
Python安装Bs4的多种方法
2020/11/28 Python
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
美国第一个网上卖鞋零售商:OnlineShoes.com
2017/09/24 全球购物
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
JAVA招聘远程笔试题
2015/07/23 面试题
学习党的群众路线教育实践活动心得体会
2014/03/01 职场文书
2014村书记党建工作汇报材料
2014/11/02 职场文书
2014年六五普法工作总结
2014/11/25 职场文书
2014年宣传部个人工作总结
2014/12/06 职场文书
2015新生加入学生会自荐书
2015/03/24 职场文书
保险公司客户经理岗位职责
2015/04/09 职场文书
教你如何使用Python下载B站视频的详细教程
2021/04/29 Python