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编程起步(第二课)
Feb 27 Javascript
JS方法调用括号的问题探讨
Jan 24 Javascript
Javascript中的包装类型介绍
Apr 02 Javascript
ztree获取选中节点时不能进入可视区域出现BUG如何解决
Dec 03 Javascript
Bootstrap模仿起筷首页效果
May 09 Javascript
WebView启动支付宝客户端支付失败的问题小结
Jan 11 Javascript
js实现文字选中分享功能
Jan 25 Javascript
JavaScript中object和Object的区别(详解)
Feb 27 Javascript
详解Vue.js之视图和数据的双向绑定(v-model)
Jun 23 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
Sep 28 Javascript
JS匿名函数内部this指向问题详析
May 10 Javascript
JS可断点续传文件上传实现代码解析
Jul 30 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中用接口、抽象类、普通基类实现“面向接口编程”与“耦合方法”简述
2011/03/23 PHP
php 如何获取数组第一个值
2013/08/06 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
深入探究PHP的多进程编程方法
2015/08/18 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
通过判断JavaScript的版本实现执行不同的代码
2010/05/11 Javascript
javascript五图轮播切换实用版
2012/08/17 Javascript
弹出最简单的模式化遮罩层的js代码
2013/12/04 Javascript
JQuery遍历json数组的3种方法
2014/11/08 Javascript
AngularJS指令与指令之间的交互功能示例
2016/12/14 Javascript
基于webpack 实用配置方法总结
2017/09/28 Javascript
vue中使用iview自定义验证关键词输入框问题及解决方法
2018/03/26 Javascript
Javascript实现异步编程的过程
2018/06/18 Javascript
浅谈JavaScript 代码简洁之道
2019/01/09 Javascript
简单了解vue 插值表达式Mustache
2020/07/22 Javascript
浏览器JavaScript调试功能无法使用解决方案
2020/09/18 Javascript
[02:43]DOTA2英雄基础教程 半人马战行者
2014/01/13 DOTA
[01:00:06]加油DOTA_EP01_网络版
2014/08/09 DOTA
python实现倒计时的示例
2014/02/14 Python
Python开发实例分享bt种子爬虫程序和种子解析
2014/05/21 Python
Python中title()方法的使用简介
2015/05/20 Python
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
利用pandas进行大文件计数处理的方法
2018/07/25 Python
Python中几种属性访问的区别与用法详解
2018/10/10 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
详解Python中string模块除去Str还剩下什么
2020/11/30 Python
canvas 橡皮筋式线条绘图应用方法
2019/02/13 HTML / CSS
南威尔士家居商店:Leekes
2016/10/25 全球购物
幼儿如何来做好自我评价
2013/11/05 职场文书
群众路线教育党课主持词
2014/04/01 职场文书
行政专员岗位职责说明书
2014/07/30 职场文书
环境保护建议书
2014/08/26 职场文书
2015年办公室主任工作总结
2015/04/09 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书
python使用glob检索文件的操作
2021/05/20 Python
关于@OnetoMany关系映射的排序问题,使用注解@OrderBy
2021/12/06 Java/Android