我包括流行的文件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函数时检查结果?感谢
答案 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!');
}
}