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

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

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

在我的开发服务器上,事情很完美。 在我的实时服务器上,它有时会给我一个“请求无效”错误,我可以在firebug中看到。 我认为服务器不堪重负,或者某些缓存模块可能会与多个请求混淆。 我将尝试单独找出该问题,但也只是想让它在失败时重试相同的请求(一次)。 是否有一个光滑的jQuery方法来做到这一点?

我不会称之为光滑,但你可以使用$.load的回调函数。 如果状态为error ,您可以重做负载。

  

这样的事可能适合你。

 function doAjax() { $.ajax({ url: '/path/to/file', type: 'GET', dataType: 'html', data: {studentId : 3}, error: function(xhr, textStatus, errorThrown) { setTimeout('doAjax()', 5000); } }); } 

如果您的服务器被淹没,我会建议使用setTimeout延迟等待一段时间再尝试,否则它会更加严重地破坏您的服务器。

编辑:我没注意到你只说过一次。 您可以将setTimeout包装在计数器中,因此递归不会重复。 或者,如果您决定继续尝试,这是一种很好的方式,直到您得到响应为止。