向MVC控制器发出AJAX请求并从js中获取响应中的数据

时间:2016-01-19 19:16:36

标签: javascript jquery asp.net ajax asp.net-mvc

在按钮上单击我试图将用户输入到文本框中的产品名称值发送到要修改的服务器,然后使用AJAX返回到页面。我正在进入控制器中的ChangeName方法,但没有进入我的成功函数来提醒新名称。

JS:

    $("#changeNameButton").click(function () {
        var productName = $("#Name").val();

        $.ajax({
            url: '/Products/ChangeName/',
            type: 'POST',
            dataType: 'JSON',
            data: {name: productName},
            success: successFunc
        });
    });


    function successFunc(data) {
        alert(data);
    }

控制器:

    public string ChangeName(string name)
    {
        string changedName = ChangeNameHelper(name);
        return changedName;
    }

如果有人可以就MVC5 / 6中对控制器进行异步调用的正确方法提出建议,那就太棒了。

我的主要问题是我从未在响应中进入successFunc()。

3 个答案:

答案 0 :(得分:1)

关于你的评论,如果只返回一个字符串,MVC会将其转换为json。

现在,在您更新的代码中,您仍然可以在其内部调用方法。请拨打string changedName = ChangeNameForResult(name);或其他具有其他名称的功能。

答案 1 :(得分:0)

通过nuget包管理器安装Newtonsoft.Json并在控制器中执行此操作

Public ActionResult ChangeName(string name)
{
     // get your object you want to serialize let's say res
     return JsonConvert.SerializeObject(res);

}

答案 2 :(得分:0)

我需要设置dataType:' text'而不是JSON,因为我返回一个简单的字符串。

dataType是要返回的数据类型,contentType是要发送的数据类型。