home.html
front page testtest.php
<SCRIPT language="JavaScript" SRC="ajax.js"></SCRIPT>
<button type="button" onclick="callAJAX('home.html','displaydiv')">Click Me!</button>
<div id="displaydiv"></div>ajax.js
function callAJAX(url, pageElement, callMessage) {
document.getElementById(pageElement).innerHTML = callMessage;
try {
req = new XMLHttpRequest(); /* e.g. Firefox */
} catch(e) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
/* some versions IE */
} catch (e) {
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
/* some versions IE */
} catch (E) {
req = false;
}
}
}
req.onreadystatechange = function() {responseAJAX(pageElement);};
req.open("GET",url,true);
req.send(null);
}
function responseAJAX(pageElement) {
console.log(req.readyState);
var output = '';
if (req.readyState == 4) {
if (req.status == 200) {
output = req.responseText;
document.getElementById(pageElement).innerHTML = output;
}
}
}以上代码主要来自这里:
问题:
readyState属性什么时候会改变呢?req.send(null);后console.log(req.readyState);,它显示:1 2 3 4,它没有输出0,这是因为0: request not initialized发布于 2013-07-10 02:58:32
readyState在几个地方发生变化,查看Mozilla的文件以获得更多信息。req.readyState =0表示还没有调用req.open()。
此外,根据您试图使用此代码支持哪些浏览器?,您可以查看使用XHR2中的一些特性,包括一个req.onload()函数,该函数将您的代码更改为:
function callAJAX(url, pageElement, callMessage) {
var elem = document.getElementById(pageElement);
elem.innerHTML = callMessage;
var req = new XMLHttpRequest();
req.onload = function() {
elem.innerHTML = req.responseText;
};
req.open("GET",url,true);
req.send(null);
}https://stackoverflow.com/questions/17561751
复制相似问题