当前位置: 首页 > 面试题库 >

如何在$ .ajax请求上设置超时并在花费太长时间的情况下重做?

彭飞虎
2023-03-14
问题内容

有人可以向我展示一个有关为我的$ .ajax请求设置超时并重做整个请求(如果第一个请求超时)的实际示例,我已经阅读了文档但没有得到。我将不胜感激。

这是我的$ .ajax请求。

    $.ajax({
        url: '<?php bloginfo('template_directory'); ?>/ajax/product.php',
        type: 'get',
        data: {product_id : product_id},
        beforeSend: function(){
            $('#details').html('<div class="loading"></div>');
        },
        success: function(data){
            $('.iosSlider').fadeOut('fast');
            thisprod.addClass('current');
            $('#details').css({opacity: 0}).html(data).stop().animate({left: 0, opacity: 1}, 800);
        }
    });
    return false;

问题答案:

在AJAX功能需要一个超时参数,你可以在错误的情况下,检查状态。

var call =function(){
    $.ajax({
        url: '<?php bloginfo('template_directory'); ?>/ajax/product.php',
        type: 'get',
        timeout: 400,
        ...
        error: function(x, textStatus, m) {
            if (textStatus=="timeout") {
                 call();
            }
        }
    });
};

您可能需要做一些更聪明的操作,以避免永久性通话…

从文档中:

设置请求的超时(以毫秒为单位)。这将覆盖通过$ .ajaxSetup()设置的所有全局超时。超时时间始于进行$
.ajax调用的时间点;如果其他几个请求正在进行中,并且浏览器没有可用的连接,则请求可能会超时,然后才能发送。在jQuery
1.4.x及更低版本中,如果请求超时,则XMLHttpRequest对象将处于无效状态。访问任何对象成员都可能引发异常。仅在Firefox
3.0以上版本中,脚本和JSONP请求无法通过超时取消;即使脚本在超时期限之后到达,脚本也将运行。




 类似资料:
  • 我正在尝试训练一个模型,在我看来,与其他数据集相比,该模型花费的时间太长,因为完成一个历元需要大约1小时和20分钟。我认为问题是因为数据集没有存储在ram上,但我不确定这一点。 代码如下: 型号: 顺序模型 2个卷积层,32个神经元,激活=relu 1个卷积层,64个神经元,激活=relu 平整和致密层,激活=relu 退出0.5 具有sigmoid激活的输出层(致密) Adam optimize

  • 我使用前端Spring云应用程序(微服务)作为Zuul代理()将请求从外部源路由到使用Spring云编写的其他内部微服务(Spring boot) Zuul服务器直接来自示例部分中的应用程序 我在本地运行了这组服务,这一切似乎都工作正常,但如果我在网络上运行它有一些负载,或通过VPN,然后我开始看到Zuul转发错误,我在日志中看到客户端超时。 有没有办法改变Zuul转发的超时时间,这样我就可以从眼

  • 问题内容: SQL: 用户索引: 个人资料索引 解释 : 上面的查询大约需要0.1221 我怎样才能使其运行更快? 问题答案: 我删除了此查询,因此搜索完成后不会显示总结果数。 似乎是临时解决方案,甚至是永久解决方案。

  • 问题内容: 有时功能运作良好,有时却无法。 如何为此ajax请求设置超时?例如,如果时间为3秒,则显示错误。 问题是,ajax请求将冻结该块直到完成。如果服务器关闭了一段时间,它将永远不会结束。 问题答案: 请阅读 文档,这是一个涵盖的主题。 您可以通过访问选项的textStatus参数来查看抛出了哪种类型的错误。选项为“超时”,“错误”,“中止”和“ parsererror”。

  • 问题内容: 我想衡量用户在网页上花费的时间(以秒为单位,以整数为单位,以浮点数表示,以分钟为单位)。我知道有一个卸载事件,当他们离开页面时,我可以触发该事件。但是如何获得他们已经在那里度过的时间呢? 问题答案: 如果您使用Google Analytics(分析),他们会提供此统计信息,尽管我不确定他们是如何获得的。 如果要自己滚动,则需要将一些AJAX请求发送到服务器进行日志记录。 jQuery有

  • 问题内容: 我在Go中制作了一个URL提取程序,并具有要提取的URL列表。我将请求发送到每个URL并获得他们的响应。 如何为每个Get请求设置自定义超时?(默认时间很长,这会使我的提取程序非常慢。)我希望提取程序的超时时间为40-45秒左右,之后它应该返回“请求超时”并移至下一个URL。 我该如何实现? 问题答案: 显然在Go 1.3中,http.Client具有“超时”字段 这为我完成了窍门。