如何让 jQuery 在失败时自动重试 load()?

Wil*_*ver 3 jquery

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

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

在我的开发服务器上一切正常。在我的实时服务器上,有时它会给我一个“请求无效”错误,我可以在 firebug 中看到该错误。我认为服务器已经不堪重负,或者某些缓存模块可能与多个请求混淆。我将尝试单独解决该问题,但也只是希望它在失败时重试相同的请求(一次)。有没有一种灵活的 jQuery 方法可以做到这一点?

Jer*_* B. 5

像这样的东西可能对你有用。

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

如果你的服务器被淹没,我建议使用 setTimeout 延迟一段时间,然后再重试,否则它会对你的服务器造成更严重的打击。

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