升级到MVC5之后jQuery Post没有工作,但jQuery AJAX工作正常

时间:2014-05-29 11:36:47

标签: c# jquery ajax asp.net-mvc asp.net-mvc-5

我试图从.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

1 个答案:

答案 0 :(得分:3)

在TestObject类中,您已将“name”声明为变量,它应该是Property。

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