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

jQuery Post升级到MVC5后不工作,但jQuery AJAX工作得很好

在你的TestObject类中你已经声明了"name"作为变量,它应该是Property。

    public class TestObject
    {
        public string name { get; set; }
    }