如何运行"成功"函数在MVC4 Jquery Ajax请求中?

时间:2014-11-07 15:37:50

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

我正在使用C#和jQuery创建一个简单的MVC4应用程序。在此应用程序中,当用户按下id为SaveCheckboxChanges的按钮时,我将两个数据阵列发送到服务器。然后,服务器处理数据并将其保存在数据库中。

发生这种情况时,我想按下按钮进行更改。 目前,当用户点击按钮时,按钮文本会更改为'Saving changes',这很好,但之后它永远不会改变。

这是因为我在Ajax请求中发送的success函数从未被调用,只有error函数被调用,即使没有错误发生,我得到OK答案

接收请求的控制器:

[HttpPost]
public ActionResult UpdateCheckBoxes(int[] requiresSetupArray, int[] disabledArray)
{
    //Do operations with the requiresSetupArray and disabledArray Arrays
    DB.SaveChanges();
    return Content("OK");
}

起初我认为发生这种情况是因为UpdateCheckBoxes方法是void并且没有返回任何内容。但是现在我将其更改为上面的内容,只调用了error函数。

正在执行的Javascript代码:

$("#SaveCheckboxChanges").click(function (event) {
        var button = $("#SaveCheckboxChanges");
        if (!button.hasClass("disabled")) {

            button.attr('value', 'Saving changes');

            var requiresSetupArray = [1, 2];
            var disabledArray = [3, 4];

            $.ajax({
                url: '/Material/UpdateCheckBoxes',
                type: 'POST',
                contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                traditional: true,
                data: JSON.stringify({ requiresSetupArray: requiresSetupArray, disabledArray: disabledArray }),
                success: function (data) {
                    alert("success " +  data);
                    button.attr('value', 'Save Checkbox Changes');
                    button.addClass('disabled');
                },
                error: function () {
                    alert("error");
                }
            });

我该如何解决这个问题? 我是否被迫在控制器的方法中返回一些内容来运行success函数?如果是这样我该怎么办?

1 个答案:

答案 0 :(得分:1)

如果你不希望你的方法返回任何内容 - 不要求JSON作为结果:

$.ajax({


       url: '/Material/UpdateCheckBoxes',
        type: 'POST',
        contentType: 'application/json; charset=utf-8',
        //  dataType: 'json', - remove this line.
        traditional: true,
        data: JSON.stringify({ requiresSetupArray: requiresSetupArray, disabledArray: disabledArray }),
        success: function (data) {
            alert("success " +  data);
            button.attr('value', 'Save Checkbox Changes');
            button.addClass('disabled');
        },
        error: function () {
            alert("error");
        }
    });