如果加载失败,如何使jQuery自动重试加载()?

如果加载失败,如何使jQuery自动重试加载()?,jquery,Jquery,我正在通过jquery load()在页面上的许多地方进行内容替换 <script> $(document).ready(function(){ $('#row').load('/getStudentDetails',{studentId:3}); }); </script> $(文档).ready(函数(){ $('#row').load('/getStudentDetails',{studentId:3}); }); 在我的开发服务器上,一切都很

我正在通过jquery load()在页面上的许多地方进行内容替换

<script>
  $(document).ready(function(){
    $('#row').load('/getStudentDetails',{studentId:3});
  });
</script>

$(文档).ready(函数(){
$('#row').load('/getStudentDetails',{studentId:3});
});

在我的开发服务器上,一切都很好。在我的实时服务器上,有时它会给我一个“请求无效”错误,我可以在firebug中看到这个错误。我认为服务器已经不堪重负,或者某些缓存模块被几个请求弄糊涂了。我将尝试单独解决这个问题,但也只是希望它在失败时重试相同的请求(一次)。有一种巧妙的jQuery方法可以做到这一点吗?

我不认为它很巧妙,但您可以使用
$.load的回调函数。如果状态为
error
,则可以重新加载

<script>
 $(document).ready(function(){
  $('#row').load('/getStudentDetails',{studentId:3}, function(response, status, xhr) {
    if(status == 'error') {
      $('#row').load('/getStudentDetails',{studentId:3});
    }
  });
 });
</script>

$(文档).ready(函数(){
$('#row').load('/getStudentDetails',{studentId:3},函数(响应,状态,xhr){
如果(状态=‘错误’){
$('#row').load('/getStudentDetails',{studentId:3});
}
});
});

像这样的东西可能适合你

function doAjax() {
    $.ajax({
        url: '/path/to/file',
        type: 'GET',
        dataType: 'html',
        data: {studentId : 3},
        error: function(xhr, textStatus, errorThrown) {
            setTimeout('doAjax()', 5000);
        }
    });
}
如果您的服务器被淹没,我建议延迟setTimeout,在重试之前稍等片刻,否则它会对您的服务器造成更大的冲击

编辑:我没注意到你只说了一次。您可以将setTimeout包装在计数器中,这样递归就不会重复。或者,如果你决定要它继续尝试,这是一个很好的方式,它的工作,直到你得到回应