0

除了 GET 之外的 jsonp http 方法(POST、PUT、OPTIONS、DELETE)

使用 jquery 内置的 $.ajax 方法看起来像这样

$(document).ready(function() {
    $.ajax({
    type: "GET",
    url: "http://myurl.com/webservice&callback=?",
    ...
});

只想提请注意type: "GET", 使用 $.ajax 执行 http PUT 将只是更改type: "PUT",

此代码示例来自使用 jquery ajax 从跨域解析 JSON

不使用 $.ajax

使用谷歌代码的 jquery.jsonp https://github.com/jaubourg/jquery-jsonp

这是一个使用带有 GET 方法的 jquery.jsonp.js 的示例

$.jsonp({
    cache: false,
    url: 'http://www.mydomain.com/logicalurl/2/',
    callbackParameter: 'callback',
    timeout: 10000,
    success: function(json, textStatus, xOptions) {
        myglob = json;
        MyModulePatternObject.initNew(json);
    },
    error: function (xOptions, textStatus) {
    console.log("fail");
    }
});

这完美地工作。如何进行 GET jsonp 请求不是我的问题。

在 $.jsonp 中,想要执行其他 http 方法:PUT POST DELETE OPTIONS ...?$.jsonp 支持type="PUT",吗?

文档中根本没有提到它:API.md 和 TipsAndTricks.md 源代码中也没有。

更新

@ohgodwhy 有一个 hack (iframes / Proxy) 可以让 POST 2 跨域工作。 将 PUT/POST/DELETE 与 JSONP 和 jQuery 一起使用

@thefrontender 链接文章建议研究“跨源资源共享 (CORS)”

浏览器支持 CORS http://caniuse.com/cors

同一篇文章还说:“您可以将 JSON 编码为 URL 参数,但您甚至会为此感到羞耻。” 在整个历史中,羞耻从未阻止过任何人?简单、懒惰且在有限的情况下可以完成工作。

谢谢4大家的帮助...

4

1 回答 1

2

JSON-P 通过将脚本标签注入文档来工作:它不是传统的 XHR 请求。

所以你通常只能执行 GET 请求。您不能执行 PUT 请求。

这篇文章中的更多细节:http: //johnnywey.wordpress.com/2012/05/20/jsonp-how-does-it-work/

于 2013-05-22T05:38:51.777 回答