我试图从.NET 4&amp ;;升级项目MVC4到.NET 4.5& MVC5。除了我的jQuery.post()方法之外,我设法让一切工作正常。
我创建了一个简单的测试API控制器:
public class HomeApiController : ApiController
{
[HttpPost]
public string Test(TestObject test)
{
return test.name + "asdf";
}
public class TestObject
{
public string name;
}
}
我试图让以下$ .post()正常工作。这正是我在MVC4中做到的,它运行良好。
var data = { name: 'owen' };
$.post('/api/HomeApi/Test/', data)
.done(function (result) {
console.log(result);
});
但是这个名字总是以null结尾,我只是得到了#34; asdf"作为结果。我也尝试过JSON.stringify(数据)。
但是,如果我像这样使用$ .ajax(),它工作正常,我得到了#ow; owenasdf"结果。
var data = { name: 'owen' };
$.ajax({
url: "/api/HomeApi/Test/",
type: "POST",
data: JSON.stringify(data),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (result) {
console.log(result);
},
error: function () {
alert("An error has occured!!!");
}
});
我花了半天的时间浏览谷歌,我只能找到$ .ajax()的例子,而且我真的不想通过我所有的旧代码并更改$ .post()到$ .ajax()。 $ .post()非常简单!
有人可以告诉我为什么$ .post()不再有效吗?
更新
当我检查提琴手中的帖子时,这些是不同的:
POST(使用JSON.stringify(),没有,结果相同)
Accept: */*
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
AJAX
Accept: application/json, text/javascript, */*; q=0.01
Content-Type: application/json; charset=utf-8
答案 0 :(得分:3)
在TestObject类中,您已将“name”声明为变量,它应该是Property。
public class TestObject
{
public string name { get; set; }
}