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的并行运算实现代码
Nov 19 Javascript
js一般方法改写成面向对象方法的无限级折叠菜单示例代码
Jul 04 Javascript
JS读取XML文件数据并以table形式显示数据的方法(兼容IE与火狐)
Jun 02 Javascript
Mac下使用charles遇到的问题以及解决办法
Jan 10 Javascript
Vue仿手机qq的实例代码(demo)
Sep 08 Javascript
javascript+html5+css3自定义弹出窗口效果
Oct 26 Javascript
基于vue-resource jsonp跨域问题的解决方法
Feb 03 Javascript
使用vue-aplayer插件时出现的问题的解决
Mar 02 Javascript
layui中使用jquery控制radio选中事件的示例代码
Aug 15 jQuery
vue富文本框(插入文本、图片、视频)的使用及问题小结
Aug 17 Javascript
vue通过滚动行为实现从列表到详情,返回列表原位置的方法
Aug 31 Javascript
一篇文章,教你学会Vue CLI 插件开发
Apr 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
PHP中的cookie
2006/11/26 PHP
mysql_fetch_row,mysql_fetch_array,mysql_fetch_assoc的区别
2009/04/24 PHP
php表单请求获得数据求和示例
2014/05/15 PHP
YII模块实现绑定二级域名的方法
2014/07/09 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
PHP设计模式之装饰器(装饰者)模式(Decorator)入门与应用详解
2019/12/13 PHP
jquery 1.4.2发布!主要是性能与API
2010/02/25 Javascript
javascript window.opener的用法分析
2010/04/07 Javascript
js 时间函数应用加、减、比较、格式转换的示例代码
2013/08/23 Javascript
利用js正则表达式验证手机号,email地址,邮政编码
2014/01/23 Javascript
js中arguments,caller,callee,apply的用法小结
2014/01/28 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
angular.foreach 循环方法使用指南
2015/01/06 Javascript
微信小程序 开发指南详解
2016/09/27 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
2016/10/29 Javascript
jQuery 常见小例汇总
2016/12/14 Javascript
JS仿QQ好友列表展开、收缩功能(第一篇)
2017/07/07 Javascript
jQuery实现右侧抽屉式在线客服功能
2017/12/25 jQuery
JS运动特效之同时运动实现方法分析
2018/01/24 Javascript
基于Vue2.X的路由和钩子函数详解
2018/02/09 Javascript
vue-next/runtime-core 源码阅读指南详解
2019/10/25 Javascript
编写Python脚本抓取网络小说来制作自己的阅读器
2015/08/20 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
Pytorch实现将模型的所有参数的梯度清0
2020/06/24 Python
完美解决keras 读取多个hdf5文件进行训练的问题
2020/07/01 Python
SVG实现多彩圆环倒计时效果的示例代码
2017/11/21 HTML / CSS
html5调用app分享功能示例(WebViewJavascriptBridge)
2018/03/21 HTML / CSS
销售员自我评价怎么写
2013/09/19 职场文书
工程班组长岗位职责
2013/12/30 职场文书
简历中的自我评价范文
2014/02/05 职场文书
2014年元旦促销活动方案
2014/02/22 职场文书
班干部竞选演讲稿
2014/04/24 职场文书
个人求职信格式范文
2015/03/20 职场文书
人力资源部工作计划
2019/05/14 职场文书
Win11开始菜单添加休眠选项
2022/04/19 数码科技