使用PUT从JavaScript数组更新对象

时间:2014-06-09 19:51:37

标签: jquery ajax json servicestack

我的JavaScript客户端中有一个ContactCard对象数组,我需要通过更改对象的PUT请求更新其中一个对象到我的ServiceStack服务,但是我对于如何做到这一点感到非常难过。

这是我现在的DTO定义:

[Route("/directory/contactcard", "PUT")]
public class DirectoryContactCardUpdateRequest : IReturn<bool>
{
    public ContactCard Card { get; set; }
}

客户端数组从ServiceStack服务填充,该服务返回List<ContactCard>

我正在尝试传递更改后的ContactCard,但在服务端,每个属性都只是null

$.ajax({
    url: '/RestApi/directory/contactcard',
    type: 'PUT',
    dataType: "json",
    data: { Card: JSON.stringify(e.model) },
    success: function (data) {
        console.log(data);
    },
    error: function (e) {
        alert("Error saving card");
    }
});

看起来ServiceStack正确路由,因为我可以在服务中遇到断点,但为什么ContactCard DTO的属性始终都是null

2 个答案:

答案 0 :(得分:2)

您的请求对象属性始终为null,因为您的请求数据未正确形成。您需要在data电话中更改$.ajax媒体资源的发送方式:

目前:

data: { Card: JSON.stringify(e.model) }

应该是:

data: JSON.stringify({ Card: e.model })

假设e.model表示单个ContactCard对象,那么现在应该可以正常工作。

答案 1 :(得分:0)

是的,实际上这就是问题

var myData = {
ContactCard: e.model
};

$.ajax({
data: JSON.stringify(myData)});

指示我指向正确的方向!