2011-09-25 95 views
6

我使用jQuery的$ .ajax向第三方服务器发出使用JSONP的请求。我指定的方法为POST,但它使用GET无论如何:jQuery:通过ajax获取JSON,但用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的来源,我看这两条线,似乎迫使所有跨域请求得到的,但我不明白为什么它需要如此:

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

是否有可能使用POST而不是GET来做到这一点?为什么jQuery强制使用GET?

回答

5

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

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

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

+0

对于服务器代理建议+1。 –

+0

谢谢,这非常有道理! –

相关问题