如何减少XMLHttpRequest时滞?

时间:2009-05-29 01:27:59

标签: javascript ajax xmlhttprequest

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

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

2 个答案:

答案 0 :(得分:7)

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

如果记忆服务你只需要做

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

true使请求异步。

答案 1 :(得分:1)

您需要在后台指定XMLHttpRequest以异步方式运行。然后,您可以提供回调功能,以便用户可以继续浏览,直到操作完成。

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