如何将MVC ActionResult中的值传递给AJAX成功回调函数?

时间:2015-10-22 19:13:53

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

我对控制器进行了一次AJAX调用,并希望从控制器接收一个值,以便在回调函数中使用,这样我就可以触发一个事件(在本例中是一个Kendo Popup Window)。我很难在网上找到一个有效的例子。任何帮助解决这个问题都将不胜感激。

我的AJAX电话:

$("#SubmitButton").on("click", function () {

    $.ajax({
        url: "/Workflow/SaveWorkflow",
        type: 'POST',
        data: ({ buttonType: "Submit Form" }),
        success: function(data)
        {
            if (data.Multiple != null) {

                var window = $("#SelectUsers").data("kendoWindow");

                window.refresh({
                    url: ("Workflow", "SelectNextFormUsers"),
                    datatype: "json",
                    data: ({ formInstanceID: '@Model.FormInstanceID', userOption: 2 })
                });

                window.center();
                window.open();
            }
            else
            {
                //do nothing
            }
        }
    })
});

我试图在控制器中返回值(控制器返回一个ActionResult):

if (nextformRule.UserOption != (int)UserOptions.AllUser)
{
    //return RedirectToAction("SelectNextFormUsers", new { forminstanceID = fmInst.FormInstanceID, userOption = nextformRule.UserOption });  //Send Email page

    //string result = "multiple";

    //return Json(result, JsonRequestBehavior.AllowGet);
    //return Content(result);

    return Json(new
    {
        Multiple = "multiple"
    });
}

1 个答案:

答案 0 :(得分:0)

我猜#SubmitButtonform标记内的常规提交按钮,当点击它时,会执行JavaScript点击处理程序(以及相应的ajax请求),但该按钮的默认行为不是预防。发生常规表单提交,您将收到浏览器显示的JSON结果。

您可以尝试使用event.preventDefault(推荐)阻止此默认行为:

$("#SubmitButton").on("click", function (event) {
    event.preventDefault();

    [ ... ]
});

或者在事件处理程序结束时返回false

$("#SubmitButton").on("click", function () {
    [ ... ]

    return false;
});