2012-10-23 56 views
2

我有以下的jQuery代碼:jQuery.ajax POST請求轉換成GET

$.ajax({ 
     url: Url, 
     dataType: 'JSONP', 
     type: 'POST', 
     success: function (data, textStatus, jqXHR) { 
      //callback function here 
     }, 
     error: function (xhr, ajaxOptions, thrownError) { 
      //report error 
     } 
    }); 

然而,當我在Fiddler查看此AJAX請求,我的要求已經從POST轉換爲GET

這不適用於我連接的API,因爲它必須是POST請求。

這是怎麼發生的?

+0

如果您連接的API需要POST,那麼它不使用JSON-P。如果它使用'JSON-P',那麼它不需要'POST'。 (也許你會混淆'JSON',一種數據交換的格式和'JSON-P',一種繞過同源策略的機制?) –

回答

8

JSONP請求只能是GET。

刪除dataType: 'JSONP'

+0

哦,對,謝謝!我會盡可能接受。我怎樣才能不用'JSONP'來做XSS? :/ – Curt

+0

@Curt:您可以使用[CORS](http://www.w3.org/TR/access-control/)與[現代瀏覽器](http://caniuse.com/#feat=cors)一起使用,只要你連接的服務器允許你。 IE8和9對CORS的支持已經存在,但已經崩潰了,需要解決方法(jQuery不爲你所用)。 IE10會正確支持它。 –

1
dataType: 'JSONP', 

始終是一個GET請求