使用多个MVC控制器方法成功实现JQuery AJAX
假设我向MVC控制器发布一个表单,并执行如下操作使用多个MVC控制器方法成功实现JQuery AJAX,jquery,ajax,asp.net-mvc,controller,Jquery,Ajax,Asp.net Mvc,Controller,假设我向MVC控制器发布一个表单,并执行如下操作 function ajaxFunction() { $.ajax({ type: "POST", url: "ControllerName/FirstMethod", data: $('#form').serialize(), success: function () { //I'm wondering if this gets run
function ajaxFunction() {
$.ajax({
type: "POST",
url: "ControllerName/FirstMethod",
data: $('#form').serialize(),
success: function () {
//I'm wondering if this gets run after the FirstMethod or SecondMethod
}
});
)
控制器操作会执行一些操作,然后重定向到下一个方法,如下所示
[HttpPost]
public ActionResult FirstMethod()
{
//Some code run here
//Send to the next method
return RedirectToAction("SecondMethod");
}
public void SecondMethod()
{
//Something else done here
}
因此,整个过程是发布到第一个方法,然后运行第二个方法。我的问题是-Ajax success()方法何时运行?是在FirstMethod还是SecondMethod之后?RedirectToAction返回一个HTTP状态代码302,这使得AJAX能够访问重定向URL(SecondMethod)
只有在返回2XX HTTP代码时才会调用jQuery AJAX success。如果SecondMethod返回带有2XX状态代码的内容(例如视图),则它将是。否则,它将永远不会被调用。这很有趣。谢谢你的回复。但是,当您直接调用公共void方法时会发生什么?我的代码中有一些,我正在使用ajax成功函数。这是另一种情况吗?当重定向到返回void的action方法时,MVC实际上返回一个EmptyResult,它是一个200状态代码,因此它确实会运行success()回调。否则,它取决于ActionResult类型。除HttpNotFoundResult、HttpUnauthorizedResult、HttpStatusCodeResult外,大多数返回2XX代码。