我有一个html表格的名字,我想能够点击一个名字,检索更多的细节的人,并显示在一个'警报'弹出窗口。我计划使用xmlhttprequest将名称发送到php文件以进行处理。我可以毫不费力地从表中检索名称,但我已经运行了一些诊断测试,似乎无法使用onreadystatechange方法触发xmlhttprequest。这是我检索名称的代码:-
function getDetails(x){
var tr1 = x.parentNode.rowIndex;
var td1 = x.cellIndex;
var table = document.getElementById("selectedTeams");
//Diagnostic
//document.getElementById("tr1").innerHTML = "1st Row index is: " + tr1;
//document.getElementById("td1").innerHTML = "1st Column index is: " + td1;
player = table.rows[tr1].cells[td1].innerHTML;
player = player.replace("<b>", "");
player = player.replace("</b>", "")
player = player.trim();
//Diagnostic
//document.getElementById("res3").innerHTML = "The player selected is: " + player;
getName(player);
//Diagnostic
//alert("This will be the "+ player + " details");
}
这会得到玩家的名字。它工作得很好。然后将玩家的名字传递给 getName()
功能。从我的诊断中,它不会触发onreadystatechange并执行后续功能。我是否在这里使用了正确的方法,或者是否有更合适的方法,以及代码的其余部分是否正常。getname()函数的代码是:-
function getName(str){
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200){
//document.getElementById("res3").innerHTML = this.responseText;
alert(this.responseText);
}
xmlhttp.open("GET", "playerDetails.php?q= " + str, true);
xmlhttp.send();
//Diagnostic
//alert("after onreadystatechange");
}
//Diagnostic
//alert("after function");
}
1条答案
按热度按时间pdkcd3nj1#
你已经把
open
及send
在房间里打电话onreadystatechange
事件处理程序,直到open
及send
我们称之为。看到第二十二条军规了吗?通过将调用移动到来解决此问题open
及send
从onreadystatechange
将事件处理程序放入封闭的getName
功能体如下: