【问题标题】:jQuery: get JSON via ajax, but with POST instead of GETjQuery:通过 ajax 获取 JSON,但使用 POST 而不是 GET
【发布时间】:2011-11-24 11:02:51
【问题描述】:

我正在使用 jQuery 的 $.ajax 使用 JSONP 向第三方服务器发出请求。我将方法指定为 POST,但它仍然使用 GET:

    $.ajax({
        type: "POST",
        dataType: "json",
        url: other_server + "/run?callback=?",
        data: {
            code: $(code).val()
        },
        success: function(obj) {
            var res = obj.results;
            $(results).val(res);
        }
    });

查看jQuery源码,我看到这两行似乎强制所有跨域请求GET,但我不明白为什么需要这样:

if ( s.crossDomain ) {
    s.type = "GET";

是否可以使用 POST 而不是 GET 来执行此操作?为什么jQuery强制使用GET?

【问题讨论】:

    标签: jquery ajax jsonp


    【解决方案1】:

    JSON-P 通过在文档中插入 <script> 元素来工作,因此它只能发出 GET 请求。

    如果您想向远程服务器发出 POST 请求,那么您需要查看 XHR 并设置 CORS 权限。请注意,这有limited browser support

    或者,将您的请求保持在同一来源(并让您的服务器向远程服务器发出请求)。

    【讨论】:

    • 谢谢,这很有道理!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 2013-08-23
    • 2021-08-06
    • 1970-01-01
    相关资源
    最近更新 更多