Ajax、jQuery 和 JSONP

标签 ajax json jquery

似乎我可以使用 jQuery 的 getJSON 方法从不同的域获取 JSON 数据(请参阅: http://docs.jquery.com/Getjson )。但是,这仅适用于 HTTP GET。

如果我需要 POST 某些内容并获取 JSON 响应怎么办?我该如何在 jQuery/Ajax 中做到这一点?

最佳答案

从版本 1.6.1 开始,在所有浏览器中无法仅使用 jQuery 从客户端向远程服务器发送 POST 请求。如果您尝试向与文档不同的域中的服务器发出任何类型的 XHttpRequest,某些浏览器将无法完成它。对远程服务器的 JSONP 请求是通过创建脚本标记来处理的,该脚本标记的 src 是添加了查询参数的 API url,包括回调方法名称。因为脚本可以从任何域加载,所以这是可行的,但它限制了您只能进行 GET 请求。远程主机返回脚本的主体,即对生成的 javascript 对象调用的回调。 jQuery 通常会为您创建回调函数,并从中调用您在 getJSON 方法参数中提供的匿名回调函数。

有新兴标准,CORSUMP (另请参阅 comparison ),某些浏览器支持但不是以标准化方式(请阅读 IE 的不同方式)。有plugins为那些支持 CORS 的浏览器提供部分支持。不知道它们的工作效果如何,除非浏览器支持,否则它们将无法工作。

关于Ajax、jQuery 和 JSONP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6091533/

相关文章:

javascript - 拖动在 Internet Explorer 中不起作用

javascript - 如何在 MVC 5 中通过单个 Ajax POST 请求发送 ViewModel 和文件?

javascript - 对于 Django cometd 来说,什么更好呢?

javascript - 防止在 Javascript 中使用 for-in 循环进行排序

c# - JSON.NET 序列化空 JSON

javascript - 如何将动态创建的元素添加到动态创建的列表中?

javascript - 我在 jquery 1.9 中的图像交换不起作用

javascript - 错误/bug PHP SIMPLE HTML DOM 解析器

javascript - DataURI 在 Controller 中变为 null?如何从 javascript 将 DataUrl 传递到 java Controller ?

jquery - 哪个更好?多个 AJAX 请求或请求数据集