我现在苦苦挣扎了一段时间,我找不到这段代码无效的原因。
当点击#submitmsg时,它应该触发另一个从php文件中获取时间的函数。这是sorta聊天框,它应该在这种情况下显示Name(这是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);
}
答案 0 :(得分:2)
AJAX 异步。
您的回调仅在其余代码完成后运行一段时间。
答案 1 :(得分:0)
由于ajax是异步的,因此java脚本永远不会等待执行time方法。 在这种情况下,您需要编写以下代码片段格式
$(document).ready(function () {
$("#submitmsg").click(function () {
$.load("r.php",function(){
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);
}
});
});
注意:设置超时正常,因为你等待加载你的ajax调用。