1

我在一个函数中有以下 ajax 调用,该函数在 clickevent 上调用。

$.ajax({
  url:"server.php",
  type:'GET',
  data: {'action':'addEvent'},
  success: function(response)
  {
    if(response)
    {
    alert("200 ok");                
    }
 },
 error: function(xhr, ajaxOptions, ThrownError)
 {
   alert("Error:" + ThrownError);
   $("#output").text("Error: "+ThrownError);
 }
}); 

php端如下。

  if(isset($_GET["action"]))
   {
      $action = $_GET["action"];
     if($action == 'addEvent')
     {
          echo("ping");
     }

   }

现在它抛出一个错误。但我得到的错误信息是:

没错,我得到错误:

这让我快疯了。

我还放入了我的document.ready,让它充当某种ping,它运行良好

4

2 回答 2

2

看看这个 jsFiddle。我遇到了同样的错误。

为什么会发生这种情况:单击链接并发送 ajax 请求。但是默认操作不会停止,浏览器会导航到指定的 urlhref并停止任何 JS 执行。AJAX 调用也停止了。

为了防止这种情况,您应该执行以下操作:

$('a').click(function(e) { 
    $.ajax({
      url:"server.php",
      type:'GET',
      data: {'action':'addEvent'},
      success: function(response) {
        if(response) {
           alert("200 ok");                
        }
      },
      error: function(xhr, ajaxOptions, ThrownError) {
         alert("Error:" + ThrownError);
         $("#output").text("Error: "+ThrownError);
      }
   }); 
   e.preventDefault();//this will not allow browser to move to a different URL
   return false; //alternative to e.preventDefault(). 
});​

可能您有类似的问题,但很难注意到,因为您的元素导致简单的页面重新加载,浏览器导航到同一页面。

于 2012-10-30T13:03:49.850 回答
0

错误的函数定义如下:

error(jqXHR, textStatus, errorThrown)

此外,尝试通过定义以下内容来获取更多信息

statusCode

响应具有相应代码时要调用的数字 HTTP 代码和函数的映射。例如,以下将在响应状态为 404 时发出警报:

$.ajax({
  statusCode: {
    404: function() {
      alert('page not found');
    }
  }
});

如果请求成功,状态码函数采用与成功回调相同的参数;如果导致错误,它们将采用与错误回调相同的参数。

success(data, textStatus, jqXHR)

所以现在,您又定义了两个函数(成功 + http 代码)。所以如果请求失败,它会错误地执行代码,如果它成功,它会执行success。在这两种情况下,您都将获得 http 响应代码。检查代码是否为 200,然后一切顺利。404 - 脚本 url 错误。500 - 存在服务器错误等。

于 2012-10-30T12:33:10.267 回答