2012-10-10 50 views
3

我在Ajax中遇到了PUT問題。PUT jQuery的問題

如果我使用fiddler並執行PUT到URL:http://domain.com:58226/api/Person/1,請求正文:{「firstName」:「Stan」,「lastName」:「Dard」},它可以工作。

但是當我使用AJAX做同樣的,這是行不通的:

$.ajax({ 
data: '{"firstName":"Stan","lastName":"Dard"}',  //{action:'x',params: ['a','b','c']} 
url: 'http://domain.com:58226/api/Person/'+id, 
type: 'PUT', 
success: function(result) { 

alert("Uppdaterad!"); 
     } 
    }); 
+0

某些瀏覽器可能不支持Ajax'PUT'。 – VisioN

+0

我試過了,firefox和chrome。 firstName和lastName的值將變爲Null。但它在小提琴手中起作用。 我甚至試圖給JSONstringify我發送的數據: – rubin

+1

當你說「不」工作時,你期望什麼,你取得了什麼?例如。你得到了什麼錯誤信息? –

回答

0

我認爲數據必須是一個字符串。對象轉換爲查詢字符串,這是你在這裏看到的。

您可以使用JSON.stringify(obj)方法將您的對象轉換爲字符串。

+0

我寫道,我曾試圖Stringifyit。這是解決方案的一部分。我需要發送contentType:'text/json'並將其字符串化。現在它工作了!謝謝! – rubin

+0

@ user1713837對你很好用 – rahul

0

根據jquery docs,並非所有的瀏覽器都支持它。

sds

但它在提琴手工作。

Fiddler不是瀏覽器。

0

看看這個StackOverflow的帖子:

How to get/post/delete/put information with jQuery and AJAX

「你不能讓使用jQuery出於安全原因,跨域AJAX請求。」

+0

我沒有做跨域的Ajax請求。這是相同的域 – rubin

+0

在這種情況下,你是否嘗試將dataType設置爲「json」,contentType設置爲「application/json; charset = utf-8」?見http://encosia.com/3-mistakes-to-avoid-when-using-jquery-with-aspnet-ajax/ – AztecXocolatl

0

答案是JSON.stringify對象並更改contentType:text/json。