2013-02-26 4 views
0

Я могу обнаружить успешный ответ, но не смог обнаружить ошибку. Мой код:Как я могу обнаружить ответ jQuery ajax?

$.ajax({ 
     url: url, 
     dataType: 'jsonp',  
     success: function(data){ 
      $.each(data, function(a, b) { 
       if(b=="Processing post"){ 
        $("#post_response").html('Your comment will be added soon...'); 
       } 
       else if(b=="In moderation"){ 
        $("#post_response").html('Your comment has been placed in moderation...'); 
       } 
      }) 
     }, 
     error: function(xhr, testStatus, error) { 
      alert("error"); 
     } 
    }); 

Это ответы, которые я получаю. Я могу обнаружить первый ответ 2, но я не могу даже предупредить «ошибку» для последней.

jQuery191004289518775843171_1361906819321({"Message":"Processing post","Code":202}) 

jQuery191006158838421090984_1361907415719({"Message":"In moderation","Code":202}) 

jQuery191006158838421090984_1361907415719({"Message":"Not logged in","Code":403}) 

Вы видите, куда я иду не так?

+0

вы не можете уловить ошибки запроса с помощью JSONP. Если сервер возвращает статус статуса 403 в дополнение к jsonp, jQuery не сможет его обработать. –

+1

Вы утверждали, что «успех» не вызывается в третьем случае? Попробуйте добавить 'console.log' или' alert'. – pdoherty926

+0

Я попытался добавить else if (b == "Не вошел в систему") {$ ("# post_response"). Html ('Вы не вошли в систему'); \t} к успеху, но он не был поднят. –

ответ

2

Обратный вызов ошибки используется только для ответов об ошибках сервера (т. Е. Код состояния HTTP 4xx/5xx Errors). Поскольку все три ваших ответа действительны (т.е. они возвращают код состояния HTTP 200), они инициируют обратный вызов успеха.

+0

В качестве дополнения, было бы полезно отметить, что вызывает ошибку-ответ. В первую очередь заголовки http 500 и 404. Для получения дополнительной информации см. Документацию здесь: http://api.jquery.com/jQuery.ajax/ –

+0

Спасибо ... Я только что отредактировал свой ответ, чтобы включить эту деталь. Однако я не смог найти точный список кодов состояния отказа. Я всегда думал, что это все коды 4xx и 5xx. – Steve

+0

Просто проверил код jquery, и вы правы, следующие операторы if проверяют, был ли он успешным: status> = 200 && status <300 || status === 304 (Это означает, что все остальное приводит к ошибке) –

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