Как вернуть ошибку в сценарии Ajax
Я использую ASP.NET MVC с jQuery. У меня есть следующее действие MVC, которое возвращает частичную страницу в "Успехе". В случае ошибки приложения я не уверен, что отправить его для правильной обработки на стороне клиента:
public ActionResult LoadFilterSet(int filterSetId)
{
try
{
BreadCrumbManager bcManager = this.ResetBreadCrumbManager(this.BreadCrumbManagerID);
GeneralHelper.LoadBreadCrumbManager(bcManager, filterSetId);
ViewData["BreadCrumbManager"] = bcManager;
return View("LoadFilterSet");
}
catch (Exception ex)
{
return Content("");
}
}
Следующим является мой jQuery ajax-вызов. Обратите внимание, что я проверяю длину данных, чтобы убедиться, что ошибок нет. Пожалуйста, предложите мне лучший способ сделать это.
$.ajax({
type: "GET",
dataType: "html",
async: true,
data: ({ filterSetId: selectedId }),
url: link,
contentType: "text/html; charset=utf-8",
success: function(data, textStatus) {
if (data.length > 0) {
// Clear the local filters first.
clearLocalFilters();
$('td.selected-filters table.filters-display').append(data);
}
}
});
Ответы
Ответ 1
Я бы добавил функцию ошибки в настройку вызова ajax. Пусть сервер определит сообщение об ошибке для отображения и передаст ему обработчик ошибок ajax и покажет его.
success: function(data, textStatus) {
// Clear the local filters first.
clearLocalFilters();
$('td.selected-filters table.filters-display').append(data);
},
error: function (data) {
alert(data.responseText); // use any display logic here
}
В действии вашего контроллера, если обнаружена ошибка
Response.StatusCode = (int)HttpStatusCode.BadRequest;
return Content(errorMessage, MediaTypeNames.Text.Plain);
Ответ 2
Я думаю, что вы можете сделать return Content(false.ToString().ToLower());
, если ошибка была выбрана, а затем проверить, не являются ли данные ложными
if(data != false)
{
//do stuff
}
или
if(!data)
alert("Error");
else
{
//do stuff
}