$ .ajax всегда возвращает успех, даже с ошибками - PullRequest
2 голосов
/ 03 октября 2010

Я сейчас пытаюсь решить странную проблему.Я всегда работал с ajax, json и т. Д., Но понятия не имею, почему этот простой код ниже не работает.

Ниже приведен полный код javascript и html:

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
        <title>Testing Ajax</title>
    </head>

    <body>
      <script>
        $(function(){
          $('h1').click(function(){
            alert('clicked');          
            jQuery.ajax({
              url: "teste2.html",
              success: function(html){
                $('h1').append(html);
              },
              error : function(){
                alert('errou');
              }
            });
          });
        });
      </script>
      <h1>Json Funfando</h1>
    </body>
</html>

В той же папкеУ меня есть файл teste2.html.В любом случае, если я переименую URL-адрес в нечто несуществующее (например, dasdasdsadsa.html), то $ .ajax все равно вернет успех, даже при правильном имени файла возвращаемые файлы будут всегда пустыми .Обработка ошибок, если я ее вставляю, никогда не вызывается.

Кто-нибудь знает, почему это происходит?

PS .: Я пытался поместить ее в простую функцию загрузки, меняя jQuery.от ajax до $ .ajax

Ответы [ 2 ]

3 голосов
/ 03 октября 2010

Возможно, вам придется изменить способ ответа вашего сервера и заставить его возвращать другой HTTP-заголовок, который подразумевает ошибку, а не 200 OK.

Проверьте, что возвращает ваш сервер, и убедитесь, что он возвращает статус 404. Для несуществующих страниц.

0 голосов
/ 03 октября 2010

@ fabio - каков фактический заголовок ответа? Я обнаружил, что jQuery ajax и определенные браузеры на самом деле не дают ошибок в некоторых ответах. Вот тот, с которым я лично знаком:

  • FF 3.6.8 возвращает xhr.status === 0, когда сервер отвечает HTTP-кодом, если 301.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...