jQuery:通过ajax获取JSON,但使用POST而不是GET

时间:2011-09-25 00:10:35

标签: jquery ajax jsonp

我正在使用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?

1 个答案:

答案 0 :(得分:5)

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

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

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