$ .ajax总是会返回成功,即使有错误也是如此

时间:2010-10-03 02:19:44

标签: ajax jquery

我正在尝试解决一个奇怪的问题。我总是使用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。:我试着将它放在一个简单的onload函数上,将jQuery.ajax更改为$ .ajax

2 个答案:

答案 0 :(得分:3)

您可能必须更改服务器响应的方式,并使其返回不同的HTTP标头,这意味着错误而不是200 OK。

检查服务器返回的内容,并看到它为不存在的页面返回404状态。

答案 1 :(得分:0)

@fabio - 实际的响应标头是什么?我发现jQuery ajax和特定的浏览器实际上并没有对某些响应产生错误。这是我个人熟悉的那个:

  • 如果服务器使用HTTP代码回复,则FF 3.6.8会返回xhr.status === 0。