【发布时间】:2009-05-29 01:27:59
【问题描述】:
我在注册表单上使用 XMLHttpRequest 来查看他们输入的用户名是否已被使用。脚本运行良好,但我注意到发出请求时有一些时间延迟 - 发送请求后网页会冻结一秒钟。
有没有办法让请求“在后台”并且不会在前端造成任何延迟?我喜欢 Twitter 的实现:它在搜索数据库时显示一个旋转的沙漏图标。我如何获得类似的东西?
【问题讨论】:
标签: javascript ajax xmlhttprequest
我在注册表单上使用 XMLHttpRequest 来查看他们输入的用户名是否已被使用。脚本运行良好,但我注意到发出请求时有一些时间延迟 - 发送请求后网页会冻结一秒钟。
有没有办法让请求“在后台”并且不会在前端造成任何延迟?我喜欢 Twitter 的实现:它在搜索数据库时显示一个旋转的沙漏图标。我如何获得类似的东西?
【问题讨论】:
标签: javascript ajax xmlhttprequest
您想使用异步 XHR - 当前您正在执行同步请求,因此页面必须冻结,直到加载完成。异步 XHR 调用您提供的带有加载状态更新的 callbck 函数。
如果没记错的话,你只需要这样做
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) loadFinished();
}
xhr.open(requestType, url, true);
true 使请求异步。
【讨论】:
您需要指定 XMLHttpRequest 在后台异步操作。然后你可以提供一个回调函数,让用户可以继续浏览直到操作完成。
许多网站只是在等待操作返回时显示动画 GIF,这可能会给用户留下您正在寻找的印象,因为它看起来正在发生一些事情。您可以在http://www.ajaxload.info/ 轻松设计和下载其中一个 AJAX 旋转指标。
【讨论】: