我挣扎了一段时间,我无法找到此代码无法工作的原因。Javascript变量显示为undefined
当单击#submitmsg时,它应该会触发另一个函数,它会从php文件中获取时间。这是一个不同的聊天框,它应该显示名称(这是Ja)在这种情况下,它旁边的时间是可变的“tajm”。虽然未定义显示,而不是时间。
任何想法为什么不这样做?
代码如下片段:
var tajm;
$(document).ready(function() {
$("#submitmsg").click(function() {
time();
var newtext = $("#textmsg").val();
var oldtext = document.getElementById("textbox").innerHTML;
document.getElementById("textbox").innerHTML = oldtext + "<br/><div id='name'>Ja: " + tajm + "</div><div id='red'>" + newtext + "</div>";
$("#textbox").scrollTop($("#textbox")[0].scrollHeight);
});
});
function time() {
var ajax = new XMLHttpRequest();
ajax.onreadystatechange = function() {
if (ajax.readyState == 4) {
tajm = ajax.responseText;
}
};
ajax.open("GET", "r.php", true);
ajax.send(null);
}
异步HTTP请求需要时间。 – Pointy 2012-04-22 14:57:08
如果代码以“正常”顺序执行,则不必提供回调('ajax.onreadystatechange')。 – 2012-04-22 15:01:28
我已经通过添加setTimeout并延迟了一点来解决了这个问题。有没有更有效的方法可以做到这一点? – xtra 2012-04-22 15:11:27