使用jquery.forms.js选项从动作获取返回值... MVC3

时间:2012-06-14 15:50:23

标签: jquery asp.net-mvc-3

我包括流行的文件jquery.form.js。我有以下内容:

 var options = {
    beforeSubmit: beforeSubmit,  // pre-submit callback 
    success: afterSubmit  // post-submit callback 
  };

 $('#myForm').submit(function (e) {
     $(this).ajaxSubmit(options);
     return false;
  });


 function afterSubmit(responseText, statusText, xhr, $form) {
   // i want to check for an error
}

我称之为此行动:

    [HttpPost] 
    public string UploadDocument(DocumentModel model)
    {
        if (noerror)
        return "ok";
        else
         return "the error";
    }

参数'responseText,statusText,xhr,$ form'中的某处存储了返回字符串。

我的返回字符串存储在哪里,或者我如何存储它,所以我可以在调用'afterSubmit'javascript函数时检查结果?感谢

1 个答案:

答案 0 :(得分:3)

永远不要从控制器操作返回字符串。在ASP.NET MVC控制器中,操作应该返回ActionResults:

[HttpPost] 
public string UploadDocument(DocumentModel model)
{
    if (noerror)
        return Content("ok");
    else
        return Content("the error");
}

然后结果将存储在responseText变量中。

显然,在您的javascript if (responseText == 'ok')中进行测试似乎非常可怕,因此有JSON:

[HttpPost] 
public string UploadDocument(DocumentModel model)
{
    if (noerror)
        return Json(new { success = true });
    else
        return Json(new { success = false });
}

这样在你的javascript中你可以直接使用底层类型(在这种情况下为boolean):

function afterSubmit(response, statusText, xhr, $form) {
    if (response.success) {
        alert('super! we succeeded');
    } else {
        alert('Oh snap!');
    }
}