如果加载失败,如何使jQuery自动重试加载()?
我正在通过jquery load()在页面上的许多地方进行内容替换如果加载失败,如何使jQuery自动重试加载()?,jquery,Jquery,我正在通过jquery load()在页面上的许多地方进行内容替换 <script> $(document).ready(function(){ $('#row').load('/getStudentDetails',{studentId:3}); }); </script> $(文档).ready(函数(){ $('#row').load('/getStudentDetails',{studentId:3}); }); 在我的开发服务器上,一切都很
<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包装在计数器中,这样递归就不会重复。或者,如果你决定要它继续尝试,这是一个很好的方式,它的工作,直到你得到回应