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

Ned*_*der 6 ajax jquery 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);
        }
    });
Run Code Online (Sandbox Code Playgroud)

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

if ( s.crossDomain ) {
    s.type = "GET";
Run Code Online (Sandbox Code Playgroud)

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

Que*_*tin 5

JSON-P的工作原理是将一个<script>元素插入到文档中,因此它只能生成GET请求.

如果要向远程服务器发出POST请求,则需要查看XHR并设置CORS权限.请注意,这限制了浏览器支持.

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