jQuery Post升级到MVC5后不工作,但jQuery AJAX工作得很好
本文关键字:工作 jQuery AJAX 很好 Post MVC5 | 更新日期: 2023-09-27 18:05:39
我正在尝试从。net 4升级一个项目;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的形式出现,我只得到"asdf"作为结果。我也试过JSON.stringify(data).
但是如果我像这样使用$.ajax(),它工作得很好,我得到"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()不再工作?
更新当我检查fiddler中的帖子时,这些是差异:
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
在你的TestObject类中你已经声明了"name"作为变量,它应该是Property。
public class TestObject
{
public string name { get; set; }
}