我正在页面上的许多地方通过jquery load()进行一些内容替换。
<script>
$(document).ready(function(){
$('#row').load('/getStudentDetails',{studentId:3});
});
</script>
在我的开发服务器上,一切都很完美。在我的实时服务器上,它有时会给我一个“请求无效”错误,我可以在firebug中看到。我认为服务器不堪重负,或者某些缓存模块可能会与多个请求混淆。我将尝试单独找出该问题,但也只是想让它在失败时重试相同的请求(一次)。是否有一种灵巧的jQuery方法呢?
答案 0 :(得分: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包装在计数器中,因此递归不会重复。或者,如果您决定继续尝试,这是一种很好的方式,直到您得到回复为止。
答案 1 :(得分:1)
我不会称之为光滑,但您可以使用$.load
的回调函数。如果状态为error
,则可以重做负载。
<script>
$(document).ready(function(){
$('#row').load('/getStudentDetails',{studentId:3}, function(response, status, xhr) {
if(status == 'error') {
$('#row').load('/getStudentDetails',{studentId:3});
}
});
});
</script>