如何通过JavaScript获取HttpStatusCodeResult的StatusDescription

new*_*der 6 asp.net-mvc-3 asp.net-mvc-2

我有一个使用的表单 Ajax.BeginForm()

<% using (Ajax.BeginForm("UpdateCompanyShop", "CompanyShop", FormMethod.Post, 
    new AjaxOptions { OnSuccess = "updateList", OnFailure = "onError",
    UpdateTargetId="slist", LoadingElementId = "loading" }))
Run Code Online (Sandbox Code Playgroud)

控制器动作代码如下:

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");
Run Code Online (Sandbox Code Playgroud)

我在AjaxOptions中使用了OnFailure ="onError",我有这样的客户端脚本

function onError(response, status, error) {  
    var statusDescription = ***something***;  
    alert(statusDescription);
}
Run Code Online (Sandbox Code Playgroud)

我在JavaScript中使用调试器但是找不到StatusDescription(第二个参数HttpStatusCodeResult)

知道如何获得状态描述吗?或者我根本不应该使用HttpStatusCodeResult?在AJAX提交中返回错误(除了验证)的正确方法是什么?

Ser*_*eit 7

用途response.statusText:

function onError(response, status, error) {
    alert("Oops! " + response.statusText);
}
Run Code Online (Sandbox Code Playgroud)

我写了一篇文章,提供了更多的细节和几个例子: 在使用Ajax.ActionLink进行AJAX调用后处理javascript或JSON结果,不引人注目的AJAX和MVC 3

  • @Sergi Papaseit,我终于找到这篇文章http://forums.asp.net/t/1624919.aspx/2/10?Response+End+and+Filters,答案是在使用VS的WebDev.WebServer进行调试时忽略StatusDescription.不管怎么说,还是要谢谢你! (7认同)
  • Sergi,我使用调试器检查有4个属性.在我的例子中,它们的值为readyState = 4,responseText ="",status = 418和statusText ="error",它们都不等于statusDescription字符串. (2认同)