【问题标题】:How to reduce XMLHttpRequest time lag?如何减少 XMLHttpRequest 时滞?
【发布时间】:2009-05-29 01:27:59
【问题描述】:

我在注册表单上使用 XMLHttpRequest 来查看他们输入的用户名是否已被使用。脚本运行良好,但我注意到发出请求时有一些时间延迟 - 发送请求后网页会冻结一秒钟。

有没有办法让请求“在后台”并且不会在前端造成任何延迟?我喜欢 Twitter 的实现:它在搜索数据库时显示一个旋转的沙漏图标。我如何获得类似的东西?

【问题讨论】:

    标签: javascript ajax xmlhttprequest


    【解决方案1】:

    您想使用异步 XHR - 当前您正在执行同步请求,因此页面必须冻结,直到加载完成。异步 XHR 调用您提供的带有加载状态更新的 callbck 函数。

    如果没记错的话,你只需要这样做

     xhr.onreadystatechange = function() { 
         if (xhr.readyState === 4 && xhr.status === 200) loadFinished();
     }
     xhr.open(requestType, url,  true);
    

    true 使请求异步。

    【讨论】:

      【解决方案2】:

      您需要指定 XMLHttpRequest 在后台异步操作。然后你可以提供一个回调函数,让用户可以继续浏览直到操作完成。

      许多网站只是在等待操作返回时显示动画 GIF,这可能会给用户留下您正在寻找的印象,因为它看起来正在发生一些事情。您可以在http://www.ajaxload.info/ 轻松设计和下载其中一个 AJAX 旋转指标。

      【讨论】:

      • Errr 不,默认情况下 XHR 是 同步的 它在等待加载时阻塞。
      • 对——我刚刚在你评论的时候解决了这个问题。谢谢。
      猜你喜欢
      • 2019-03-11
      • 1970-01-01
      • 1970-01-01
      • 2010-10-23
      • 2019-04-23
      • 2012-04-17
      • 2015-06-02
      • 2020-01-25
      • 2019-09-24
      相关资源
      最近更新 更多