[JavaScript] jsonp

由于同源策略的限制,ajax不能发送跨域请求。
即,www.google.com域内的js,无法用ajax请求不是www.google.com域内的服务器。

如果一定要发送跨域请求,可以尝试动态创建script标签
因为<script src="..."></script>是可以发送跨域请求的。

为了支持跨域请求,服务器端需要做调整,
并不是直接返回json,而是返回可用的js代码

例如:
如果Get请求:http://jsonp.google.com/Home/TestJsonp?callback=f
返回:f(1)

则,<script src="http://jsonp.google.com/Home/TestJsonp?callback=f"></script>
就相当于:

<script>
    f(1)
</script>

其中,f是已经定义好的window.f方法。
这样就完成了跨域调用,把数据“1”传递过来了。

注:
(1)jsonp服务只需要支持Get请求即可,因为script标签无法发起Post请求。
(2)jsonp服务需要确定返回的回调函数名,使用callback来标记只是办法之一。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 五十三:请解释 JavaScript 中 this 是如何工作的。1.方法调用模式当一个函数被保存为一个对象的属性...
    Arno_z阅读 682评论 0 2
  • JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的...
    西瓜w阅读 1,906评论 0 1
  • 0. 前言 说到AJAX就会不可避免的面临两个问题。 AJAX以何种格式来交换数据? 第二个是跨域的需求如何解决?...
    公子七阅读 23,772评论 7 67
  • Ajax 模块也是经常会用到的模块,Ajax 模块中包含了 jsonp 的现实,和 XMLHttpRequest ...
    对角另一面阅读 653评论 0 1
  • 目录 1、谈谈你对Ajax的理解?(概念、特点、作用) 2、说说你对延迟对象deferred的理解? 3、什么是跨...
    w_zhuan阅读 1,043评论 1 28

友情链接更多精彩内容