2012-03-15 1 views
0
$.ajax({ 
type: "POST", 
url: "/zzz/bbb/abcd.aspx?deleteIDs=" + request_ids, 
contentType: "application/x-www-form-urlencoded", 
data: '', 
dataType: "html", 
complete: function(xhr, status) { 

    if (status == "success") 
    { 
    } 
    else { 
    } 
} 

Код jquery выше имеет статус = "успех" независимо от результата операции фона. Что я делаю не так?jquery ajax не обнаруживает ошибку при отправке на страницу aspx

ответ

1

«Успех» относится только к ответу с сервера. Если ответ сервера - ответ 200, он будет считаться успешным, независимо от того, возникла ли проблема с бизнес-логикой на стороне сервера.

Вы можете либо вернуть код ошибки 400 или 500 с сервера, либо, желательно, отправить ответ на JS, содержащий любые сообщения об ошибках.

Например, я обычно ожидаю ответ JSON от сервера. Если на стороне сервера была ошибка, в ней есть ошибка: флаг true, и я обрабатываю его в JS. Таким образом, типичный безошибочный ответ был бы:

{error:false, html:"My HTML in here"} 

ошибка на сервере будет возвращать:

{error:true, errorMsg: "My error message here"} 

отредактирован дать пример:

Ожидая ответ JSON, как описано выше, я мог бы что-то вроде этого:

$.ajax({ 
    url: 'test.json', 
    dataType: 'json', 
    success: function(data) { 
     if (data.error) { alert(data.errorMsg); } 
     else { 
      //do something with data.html 
     } 
    } 
}); 
+0

Я вижу, что вы говорите. Итак, следует ли анализировать тело ответа и искать какое-то пользовательское сообщение, которое я мог бы отправить из приложения asp.net? – developer747

+0

Я отредактировал свой ответ выше, чтобы привести пример. – Steve

+0

@ разработчик747, ответ Стив абсолютно прав. ваши данные, которые возвращаются из параметров (-ов) вашей функции успеха, могут сильно варьироваться в зависимости от того, как была разработана конечная точка ajax. вы также должны начать с console.log'а вашего параметра ответа и увидеть, что именно находится внутри него. как только вы точно это знаете, вы можете проанализировать его и начать повторять через пространство имен и свойство. – Kristian

1

Если этот код является именно тем, что вы используете, в поле url есть ошибка: вы открываете строку с двойными кавычками и заканчиваете ее одиночной цитатой.

+0

Извините, я редактировал URL-адрес, прежде чем публиковать его здесь. Исправлена ​​ошибка котировки. – developer747

Смежные вопросы