Javascript/Ajax(无jquery!)onReadyStateChange1
我正在编写一个简单的ajax函数:Javascript/Ajax(无jquery!)onReadyStateChange1,javascript,php,ajax,onreadystatechange,Javascript,Php,Ajax,Onreadystatechange,我正在编写一个简单的ajax函数: 1 function setXMLHttpRequest() { 2 var xhr = null; 3 if (window.XMLHttpRequest) { 4 xhr = new XMLHttpRequest(); 5 } 6 else if (window.ActiveXObject) { 7 xhr = new ActiveXObject("Microsoft.XMLHTTP"); 8
1 function setXMLHttpRequest() {
2 var xhr = null;
3 if (window.XMLHttpRequest) {
4 xhr = new XMLHttpRequest();
5 }
6 else if (window.ActiveXObject) {
7 xhr = new ActiveXObject("Microsoft.XMLHTTP");
8 }
9 return xhr;
10 }
11
12
13 var xhrObj = setXMLHttpRequest();
14 function get_commenti(id)
15 {
16 var url = "get_commenti.php?id="+id;
17 xhrObj.open("GET", url, false);
18 xhrObj.onreadystatechange = add_commenti(id);
19 xhrObj.send(null);
20 }
21
22 function add_commenti(id)
23 {
24 if(xhrObj.readyState == 4)
25 {
26 var id_div = "commento_"+id;
27 document.getElementById(id_div).innerHTML += xhrObj.responseText;
28 }
29 alert(xhrObj.readyState);
30 }
问题在于,第29行发出警报的readystatechange始终为1,而从不为4。
如果我使用浏览器访问页面,它会按预期打印结果(我还尝试放置一个绝对路径)
我已经尝试查找这个问题,但现在似乎每个人都在使用jQuery,而我还没有
可能值得注意的是,我在自己的web服务器上运行这个,所以可能是因为我配置了一些东西
谢谢 我使用if(xhrObj.readyState==4&&xhrObj.status==200)
试试看,也许吧?我使用if(xhrObj.readyState==4&&xhrObj.status==200)
试试看,也许吧?
onreadystatechange
不应与同步请求一起使用。
只需在ajax请求之后立即使用响应
function get_commenti(id)
{
var url = "get_commenti.php?id="+id;
xhrObj.open("GET", url, false);
xhrObj.send(null);
var id_div = "commento_"+id;
document.getElementById(id_div).innerHTML += xhrObj.responseText;
}
onreadystatechange
不应与同步请求一起使用。
只需在ajax请求之后立即使用响应
function get_commenti(id)
{
var url = "get_commenti.php?id="+id;
xhrObj.open("GET", url, false);
xhrObj.send(null);
var id_div = "commento_"+id;
document.getElementById(id_div).innerHTML += xhrObj.responseText;
}
您没有分配函数
xhrObj.onreadystatechange = add_commenti(id);
你在叫它
你需要使用闭包
xhrObj.onreadystatechange = function() { add_commenti(id); };
您没有分配函数
xhrObj.onreadystatechange = add_commenti(id);
你在叫它
你需要使用闭包
xhrObj.onreadystatechange = function() { add_commenti(id); };
你在哪里调用你的函数?你在哪个浏览器中?看这个:尝试改变这个
xhrObj.onreadystatechange=add_commenti(id)
withxhrObj.onreadystatechange=add_commenti
您在哪里调用函数?您在哪个浏览器中?请参见:尝试更改此xhrObj.onreadystatechange=add_commenti(id)我为我的无知道歉。这就成功了。现在我明白了问题所在。谢谢大家的建议!我为我的无知道歉。这就成功了。现在我明白了问题所在。谢谢大家的建议!问题是我调用函数而不是分配它。问题是我调用函数而不是分配它