创建jquery自定义对象

时间:2015-08-20 10:58:09

标签: javascript jquery asp.net asp.net-mvc

在asp中我有一个函数:

public async Task<IHttpActionResult> updateComment(int id, Comment comment)
{
    //some stuff
}

要将数据发送到此函数,我创建了一个ojbect(我正在使用knockout.js):

var com =  {
                id: self.id,
                description: self.description,
                postedBy: self.postedById,
                time: new Date($.now()),
                adId: self.adId,
            };

在ajax请求中,我发送数据为:

$.ajax({
                url: '/api/Comment/updateComment',
                dataType: "json",
                contentType: "application/json",
                cache: false,
                type: 'POST',
                data: { id: com.id, comment: com },
                success: function (data) {
                    alert("done");
                },
                error: function () {
                    alert("error");
                }
            });

但请求不会转到上面的asp.net函数。我在浏览器控制台窗口404 (Not Found)中收到错误。错误是因为它没有按预期接收comment个对象。我更改了ajax请求方法以查看url和url在下面。 enter image description here

我定义的com函数有问题吗?为什么它不起作用?

更新

public async Task<IHttpActionResult> updateComment()
{
    //some stuff
}

我改变了上面的功能,工作正常。因此确认com对象存在一些问题。函数没有像预期的那样接收对象。

更新2

现在我将功能参数更改为:

public async Task<IHttpActionResult> updateComment(Comment comment)
{
    //some stuff
}

并将数据发送为:

data: ko.toJSON(com),

再次正常工作!

2 个答案:

答案 0 :(得分:1)

错误代码为405:Method not allowed我想这就是,你的ajax是type:"Post"请求,但你的后端期待一些GET请求。

另一个建议是你可以发送一个字符串化的对象:

data : '{ "id":"' + com.id + '", "comment":"' + com + '"}',

答案 1 :(得分:1)

如果您使用带有two参数class object参数other typevar com = { id: self.id, description: self.description, postedBy: self.postedById, time: new Date($.now()), adId: self.adId, }; var obj = {}; obj.id = com.id; obj.comment = com; 的ajax帖子,则需要创建如下所示的其他obj:

注意:确保com对象的所有属性与Comment类相同。

JSON.Stringy(obj)

使用data: JSON.stringify(obj), 传递数据,如下所示:

content.data.customers_list

我测试了它正在运行的代码检查屏幕截图:

enter image description here