我有一个使用Ajax.BeginForm()
<% using (Ajax.BeginForm("UpdateCompanyShop", "CompanyShop", FormMethod.Post,
new AjaxOptions { OnSuccess = "updateList", OnFailure = "onError",
UpdateTargetId="slist", LoadingElementId = "loading" }))
控制器动作代码如下所示:
if(string.IsNullOrEmpty(company.Address))
return new HttpStatusCodeResult(418, "Please fill in address");
else if (company.DistrictID < 0)
return new HttpStatusCodeResult(418, "Please select district");
else
return new HttpStatusCodeResult(418, "Error saving data");
我在AjaxOptions中使用了OnFailure =“onError”,我有这样的客户端脚本
function onError(response, status, error) {
var statusDescription = ***something***;
alert(statusDescription);
}
我在JavaScript中使用调试器但找不到StatusDescription
(HttpStatusCodeResult
中的第二个参数)
知道如何获得状态描述吗?或者我不应该使用HttpStatusCodeResult
?在AJAX提交中返回错误(除了验证)的正确方法是什么?
答案 0 :(得分:7)
使用response.statusText
:
function onError(response, status, error) {
alert("Oops! " + response.statusText);
}
我写了一篇文章,提供了更多细节和几个例子: Dealing with javascript or JSON results after an AJAX call with Ajax.ActionLink, unobtrusive AJAX and MVC 3
答案 1 :(得分:1)
我有同样的问题。我认为statusDescription应该是JavaScript OnFailure处理程序中的response.responseText。当你执行以下操作时,responseText不为空,但它不是一个非常好的解决方案imo:
Response.StatusCode = 400;
return Json("error message here", JsonRequestBehavior.AllowGet);