2012-05-09 27 views
5

我有期待一個POST WCF服務。使用Fiddler我發現在跨域的情況下,我的POST請求變成了GET,導致服務器發生錯誤405。JQuery的阿賈克斯JSONP POST改爲GET當跨域

$.ajax({ 
    type: "POST", 
    url: "http://blah/blah.svc/Test", 
    data: JSON.stringify("{ 'WebUserID': 4 }"), 
    dataType: "jsonp", // from server 
    contentType: "application/json; charset=utf-8", // to server 
    success: function (data, status, xhr) { 
     alert("success--"); 
    } 
}); 

任何人都可以對此有所瞭解嗎?

感謝

+1

這不是真的重複,但答案回答了這個問題:http://stackoverflow.com/questions/2699277/post-data-to-jsonp – lonesomeday

回答

0

它轉換它得到,因爲你不再有做JSON.stringify後的名稱/值對;你只是有一個字符串。 POST需要一個名稱/值對。

+0

不要'JSON.stringify'你的數據,除非你'意思是傳遞一個對象的串行表示。 –

+0

他不應該串線,但不是因爲你提到的。 'stringify'的參數已經被「字符串化」了,它不是一個JS對象(它是一個字符串)。字符串化將對其進行雙重編碼,這將失敗。 – carlosfigueira

+0

併發送一個POST請求的數據,他居然需要通過對象的序列化版本(在請求體)。 – carlosfigueira

10

有沒有POST和JSONP。 JSONP通過在向服務器發送GET請求的DOM中創建一個新的腳本標記來工作。你給jQuery.ajax提供了兩個不兼容的參數(POST,jsonp),而jQuery則選擇了另一個參數。

一個更新:你可以使用類似CORS(跨來源資源共享),以使非GET請求跨域服務。 WCF不支持外的開箱,但我寫在http://blogs.msdn.com/b/carlosfigueira/archive/2012/05/15/implementing-cors-support-in-wcf.aspx在WCF實現它一個職位。

+0

Downvoter,小心點評爲什麼? – carlosfigueira