在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在下面。
我定义的com
函数有问题吗?为什么它不起作用?
更新:
public async Task<IHttpActionResult> updateComment()
{
//some stuff
}
我改变了上面的功能,工作正常。因此确认com
对象存在一些问题。函数没有像预期的那样接收对象。
更新2 :
现在我将功能参数更改为:
public async Task<IHttpActionResult> updateComment(Comment comment)
{
//some stuff
}
并将数据发送为:
data: ko.toJSON(com),
再次正常工作!
答案 0 :(得分:1)
错误代码为405:Method not allowed
我想这就是,你的ajax是type:"Post"
请求,但你的后端期待一些GET
请求。
另一个建议是你可以发送一个字符串化的对象:
data : '{ "id":"' + com.id + '", "comment":"' + com + '"}',
答案 1 :(得分:1)
如果您使用带有two
参数class object
参数other type
和var 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
我测试了它正在运行的代码检查屏幕截图: