Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用多个MVC控制器方法成功实现JQuery AJAX_Jquery_Ajax_Asp.net Mvc_Controller - Fatal编程技术网

使用多个MVC控制器方法成功实现JQuery AJAX

使用多个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

假设我向MVC控制器发布一个表单,并执行如下操作

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代码。