2012-10-10 31 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。