2012-11-24 63 views
0

我有几个要求是这样的:jQuery的AJAX请求不返回(无HTTP状态代码),并保持挂起

$('#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 request remains pending但答案没有帮助。我的PHP或HTML代码中无处使用会话。

任何想法?非常感谢。

+1

尝试在'$ .ajax'中设置'timeout'选项。我猜是服务器端代码问题,它不返回500状态 – charlietfl

+0

好吧,我确实得到一个超时..我该怎么办?等待一段时间后重新发送请求? – ale

+1

可能是需要调试的服务器代码问题。也可以添加一些AJAX错误处理。请参阅文档。还要检查浏览器控制台中的请求,以确保已定义'$ some_id'并正在发送 – charlietfl

回答

0

您确定您要求的Php文件位于同一个域中吗?通常,这在跨域Ajax调用时发生,这是大多数Web浏览器所不允许的。如果是这种情况,你必须尝试jsonp。这里有一个很好的实际解释与例子:http://www.jquery4u.com/json/jsonp-examples/

+0

PHP文件绝对是本地的。 – ale

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!') 
    } 
}); 

并检查什么样的错误你得到。

相关问题