【问题标题】:Web page becomes inactive while waiting for AJAX response?等待 AJAX 响应时网页变为非活动状态?
【发布时间】:2012-08-12 12:09:12
【问题描述】:

我在网页中使用了一个简单的 AJAX 调用。
他的网页是这样的。单击提交按钮后,JavaScript 会将文本框中的数据发送到服务器,并在 div 中显示响应。

我的 AJAX 代码是:

var xmlHttp = null;
var api="getdetails.jsp?id=";
var theUrl=api.concat(theId);
xmlHttp = new XMLHttpRequest();
xmlHttp.open( "GET", theUrl, false );
xmlHttp.send();
document.getElementById("details").innerHTML=xmlHttp.responseText;

但问题是,在等待 AJAX 响应时,网页会变为非活动状态。也就是说,用户不能在文本框中键入或单击任何其他链接。在收到响应之前,什么都做不了。

如何在等待响应时使网页正常运行?我必须使用多线程或任何其他方式吗?

【问题讨论】:

  • 请发布您的 JavaScript 代码
  • 显然您的 AJAX 调用是同步的(这不是默认行为)。向我们展示您的 AJAX 请求代码。

标签: javascript html ajax response webpage


【解决方案1】:

你需要使你的ajax请求异步,通过设置

xmlhttp.open("GET",theUrl,true);
您的请求中的第三个参数为 true。

还有这一行

document.getElementById("details").innerHTML=xmlHttp.responseText;

应该写成

xmlHttp.onreadystatechange
这样当状态发生变化并且结果在 responseText 中可用时,只有你可以设置一个 dom 元素。请仔细阅读使用 ajax 的文档。

见这个例子http://www.w3schools.com/ajax/tryit.asp?filename=tryajax_first

【讨论】:

  • 但是改变它似乎会影响它看起来的请求。网页重新加载而不是显示响应。除了这个,我还需要改变什么吗?
  • 收到数据时还需要使用xmlHttp.onreadystatechange显示数据...MDN
猜你喜欢
  • 1970-01-01
  • 2020-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-27
  • 2013-11-24
  • 1970-01-01
相关资源
最近更新 更多