簡體   English   中英

如何將值從MVC ActionResult傳遞到AJAX成功回調函數?

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

我對控制器進行了AJAX調用,並希望從控制器接收回一個用於回調函數的值,以便我可以觸發一個事件(在本例中為Kendo彈出窗口)。 我很難在網上找到一個可行的例子。 任何解決此問題的幫助將不勝感激。

我的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"
    });
}

我猜#SubmitButtonform標記內的常規提交按鈕,當單擊它時,將執行JavaScript click處理程序(以及相應的ajax請求),但不會阻止按鈕的默認行為。 進行常規表單提交,您將收到瀏覽器顯示的JSON結果。

您可以嘗試使用event.preventDefault來防止這種默認行為(推薦):

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

    [ ... ]
});

或者通過在事件處理程序的末尾返回false

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

    return false;
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM