0

我包括流行的文件 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 函数时检查结果?谢谢

4

1 回答 1

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 中您可以直接使用底层类型(在这种情况下为布尔值):

function afterSubmit(response, statusText, xhr, $form) {
    if (response.success) {
        alert('super! we succeeded');
    } else {
        alert('Oh snap!');
    }
}
于 2012-06-14T15:54:46.187 回答