Как получить StatusDescription для HttpStatusCodeResult с помощью JavaScript - PullRequest
6 голосов
/ 21 марта 2011

У меня есть форма, созданная с использованием 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");

Я использовал OnFailure = "onError" в AjaxOptions и у меня есть мойклиентский скрипт, подобный этому

function onError(response, status, error) {  
    var statusDescription = ***something***;  
    alert(statusDescription);
}

Я использую отладчик в JavaScript, но не могу найти StatusDescription (второй параметр в HttpStatusCodeResult)

Любая идея, как получить статусописание?Или я не должен использовать HttpStatusCodeResult вообще?Как правильно вернуть ошибку (кроме проверки) в AJAX submit?

Ответы [ 2 ]

7 голосов
/ 21 марта 2011

Использование response.statusText:

function onError(response, status, error) {
    alert("Oops! " + response.statusText);
}

Я написал пост, в котором представлены несколько более подробных примеров и пара примеров: Работа с результатами javascript или JSON после вызова AJAX с Ajax.ActionLink,ненавязчивый AJAX и MVC 3

1 голос
/ 21 октября 2011

У меня такая же проблема.Я думаю, что statusDescription должно быть response.responseText в обработчике JavaScript OnFailure.Когда вы делаете следующее, responseText не пустой, но это не очень хорошее решение imo:

Response.StatusCode = 400;
return Json("error message here", JsonRequestBehavior.AllowGet);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...