关于jQuery.ajax()的jsonp碰上post详解
2017-07-02 15:50
477 查看
以前一直以为当
$.ajax()的 dataType设置为jsonp时,其method(请求方法)无论怎么设置,都会变成get,直到前两天遇到了一个坑。
下面来一起看看详细的介绍:
关于跨域请求与jsonp
- 跨域:由于受到同源策略(协议、域名、端口三者必须全部相同)的影响,ajax请求会受到限制,要突破这种限制,跨域便产生了。跨域的解决方案有多种,这里不展开阐述,只是针对GET请求中的jsonp跨域解决方案做一下说明。
- jsonp,本质上jsonp不是xhr异步请求,就是请求了一个js文件,因此在chrome的network面板中的xhr标签下看不到jsonp的跨域请求,在js标签下能看到。就是利用script标签中src不受同源策略的限制,前端定义了回调函数,请求的js脚本中获取数据,并执行前端的回调函数,因此前后端需要统一定义下回调函数名。
-
$.ajax
中jsonp,$.ajax
对jsonp进行了封装看起来像是ajax请求。由于jsonp是针对get请求的跨域解决,因此之前的经验告诉我,即使type设置了post,在jsonp的时候,也会自动转换成get,直到有一天踩了个坑。翻看$.ajax模块的源码发现,只有去手动设置crossDomain为true,或者实际上是跨域,才会设置为get。否则还是填入的type
结论:
手动设置crossDomain为true,或者真的是跨域,才会修改type为GET,否则还是传入的type参数
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
您可能感兴趣的文章:
- 基于ajax和jsonp的原生封装(实例)
- 原生js的ajax和解决跨域的jsonp(实例讲解)
- 基于js原生和ajax的get和post方法以及jsonp的原生写法实例
- 全面解析Ajax和jsonp使用总结
- 使用原生js封装的ajax实例(兼容jsonp)
- 利用jsonp与代理服务器方案解决跨域问题
- Angular2 http jsonp的实例详解
- get post jsonp三种数据交互形式实例详解
- 用nodejs实现json和jsonp服务的方法
- 使用jquery的jsonp如何发起跨域请求及其原理详解
- 详解java 中Spring jsonp 跨域请求的实例
- Vue2.0 vue-source jsonp 跨域请求
- 原生js jquery ajax请求以及jsonp的调用方法
- 深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
- AngularJS实现的JSONP跨域访问数据传输功能详解
- jsonp跨域请求详解
- jQuery Jsonp跨域模拟搜索引擎
- 详细分析jsonp的原理和实现方式
相关文章推荐
- jQuery中关于Ajax的详解
- jQuery中Ajax的get、post等方法详解
- jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
- 详解jQuery中关于Ajax的几个常用的函数
- jQuery中$.get、$.post、$.getJSON和$.ajax的用法详解
- jQuery中关于Ajax的详解
- Jquery版Ajax利用JSONP 跨域POST/GET传输数据研究
- 关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题
- 详解JavaScript中jQuery和Ajax以及JSONP的联合使用
- 详解JavaScript中jQuery和Ajax以及JSONP的联合使用
- 关于jQuery.ajax()的jsonp碰上post详解
- 关于试用jquery的jsonp实现ajax跨域请求数据的问题
- jquery中$.get(),$.post(),$.ajax(),$.getJSON()区别详解以及aja
- jQuery中关于Ajax的详解
- jQuery中ajax的load()与post()方法实例详解
- 关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题
- 关于JQuery 中$.ajax函数利用jsonp实现Ajax跨域请求ASP.NET的WebService成功获取数据的案例
- jquery ajax POST 例子详解
- jquery ajax POST 例子详解
- jquery ajax POST 例子详解