0

我有几个这样的要求:

   $('#some-button').on('click', function(e) {
      e.preventDefault(); 
      $this = $(this);
      $.ajax({
         url: 'some_request.php/?q='+$some_id,
         dataType: 'json',
         success: function(data) {
            alert('success!')
         }          
      }); 
   });

即在按钮单击时启动的大量 AJAX 请求。根据 Chrome,此请求保持“待处理”状态 - 没有 JS 警报。没有返回 HTTP 响应代码。我认为它只是坐在那里等待响应而没有得到它。

问题类似于:jquery $.ajax 请求仍然挂起,但答案没有帮助。在我的 PHP 或 HTML 代码中,我没有使用会话。

有任何想法吗?非常感谢。

4

2 回答 2

2

我认为您需要一个 jQuery Ajax 错误处理函数。这里是:

// jQuery Ajax Error Handling Function
$.ajaxSetup({
    error: function(jqXHR, exception) {
        if (jqXHR.status === 0) {
            alert('Not connect.\n Verify Network.');
        } else if (jqXHR.status == 404) {
            alert('Requested page not found. [404]');
        } else if (jqXHR.status == 500) {
            alert('Internal Server Error [500].');
        } else if (exception === 'parsererror') {
            alert('Requested JSON parse failed.');
        } else if (exception === 'timeout') {
            alert('Time out error.');
        } else if (exception === 'abort') {
            alert('Ajax request aborted.');
        } else {
            alert('Uncaught Error.\n' + jqXHR.responseText);
        }
    }
});

现在调用你的 ajax 函数:

$.ajax({
    url: 'some_request.php/?q=' + $some_id,
    dataType: 'json',
    success: function(data) {
        alert('success!')
    }
}); 

并检查您遇到的错误。

于 2012-11-24T17:06:19.097 回答
0

您确定您请求的 Php 文件在同一个域中吗?这通常发生在执行大多数 Web 浏览器不允许的跨域 Ajax 调用时。如果是这种情况,您将不得不尝试使用jsonp。这是一个很好的实用解释示例:http ://www.jquery4u.com/json/jsonp-examples/

于 2012-11-24T16:30:45.337 回答