“jquery.jsonp.js”GET有效。 POST PUT DELETE OPTIONS怎么样?

时间:2013-05-22 05:26:53

标签: jquery jsonp google-code http-put http-method

除了GET(POST,PUT,OPTIONS,DELETE)之外的

jsonp http方法

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

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

只想引起对type: "GET",行的注意 使用$ .ajax执行http PUT只需更改type: "PUT",

此代码示例来自JSON parsing from cross domain using jquery ajax

不使用$ .ajax

使用google-code的jquery.jsonp https://github.com/jaubourg/jquery-jsonp

以下是将jquery.jsonp.js与GET方法一起使用的示例

$.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跨域工作。 Using PUT/POST/DELETE with JSONP and jQuery

@thefrontender 链接文章建议调查“跨域资源共享(CORS)”

浏览器http://caniuse.com/cors

支持CORS

同一篇文章还说,“你可以将JSON编码为一个URL参数,但是即使你这么想也会感到羞耻。”在历史的所有历史中,羞耻从未阻止任何人?简单,懒惰,在有限的情况下完成工作。

每个人都有帮助......

1 个答案:

答案 0 :(得分:2)

JSON-P的工作原理是在您的文档中注入脚本标记:它不是传统的XHR请求。

因此您通常只能执行GET请求。你不能执行PUT请求。

本文中的更多详细信息:http://johnnywey.wordpress.com/2012/05/20/jsonp-how-does-it-work/