2015-10-22 44 views
2

我有一个对控制器的AJAX调用,并希望从控制器接收一个用于回调函数的值,以便我可以触发事件(在本例中为Kendo弹出窗口)。我很难在网上找到一个工作示例。任何帮助解决这个问题将不胜感激。如何将MVC ActionResult的值传递给AJAX成功回调函数?

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

你得到了什么错误?在控制台或其他http错误? – Dandy

+0

没有错误,但值不发送到成功回调。它只是显示一个白色屏幕,其中我在左上角传递的字符串。我在成功回调函数中有一个警告,但它永远不会启动。 – MattParra

+0

你可以显示你的'SaveWorkflow'方法签名吗?你有'HttpPost'吗? – Dandy

回答

0

我猜#SubmitButton里面定期提交按钮一个form标签,当它被点击时,JavaScript click处理程序(和相应的ajax请求)被执行,但是按钮的默认行为不被阻止。常规表单提交发生,并且您正在接收浏览器显示的JSON结果。

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

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

    [ ... ] 
}); 

或者通过在事件处理结束返回false

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

    return false; 
}); 
+0

感谢您的建议,但这不是问题。 SaveWorkflow()方法将提交表单或用提交之前必须完成的弹出窗口中断用户。如果我阻止默认行为,则表单提交的第一个场景将无法发生。 – MattParra

+1

@MattParra。它**是**的问题。如果你只看到一个带有{Multiple =“multiple”}的新页面,那么除了ajax调用之外,你还需要进行正常的提交。 –

+0

嗯,我不能防止默认,因为它导致函数不提交EVER,我需要它提交约90%的时间。我想我已经找到了解决办法,一旦解决问题并开始工作,它就会更新。 – MattParra

相关问题