我如何将一个值从MVC ActionResult传递到AJAX成功回调函数

How can I pass a value from an MVC ActionResult to an AJAX success callback function?

本文关键字:ActionResult MVC AJAX 函数 回调 成功 一个      更新时间:2023-09-26

我对控制器进行了AJAX调用,并希望从控制器接收回调函数中使用的值,以便我可以触发事件(在本例中为剑道弹出窗口)。我很难在网上找到一个工作的例子。如果您能帮助解决这个问题,我将不胜感激。

My AJAX Call:

$("#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"
    });
}

我猜#SubmitButtonform标签内的常规提交按钮,当它单击JavaScript单击处理程序(以及相应的ajax请求)执行时,但该按钮的默认行为不被阻止。一个常规的表单提交发生了,你正在接收由浏览器显示的JSON结果。

您可以尝试使用event.preventDefault(推荐)来防止这种默认行为:

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

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

$("#SubmitButton").on("click", function () {
    [ ... ]
    return false;
});