显示为未定义的Javascript变量
我现在挣扎了一段时间,我找不到这个代码不能工作的原因 当点击#submitsg时,它将触发另一个函数,该函数从php文件获取时间。这是sorta聊天框,在这种情况下,它应该显示名称(即Ja)和旁边的时间,它是可变的“tajm”。虽然未定义的是显示而不是时间 你知道为什么这个不行吗 下面的代码片段:显示为未定义的Javascript变量,javascript,Javascript,我现在挣扎了一段时间,我找不到这个代码不能工作的原因 当点击#submitsg时,它将触发另一个函数,该函数从php文件获取时间。这是sorta聊天框,在这种情况下,它应该显示名称(即Ja)和旁边的时间,它是可变的“tajm”。虽然未定义的是显示而不是时间 你知道为什么这个不行吗 下面的代码片段: var tajm; $(document).ready(function () { $("#submitmsg").click(function () { time();
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);
}
var-tajm;
$(文档).ready(函数(){
$(“#submitmsg”)。单击(函数(){
时间();
var newtext=$(“#textmsg”).val();
var oldtext=document.getElementById(“textbox”).innerHTML;
document.getElementById(“textbox”).innerHTML=oldtext+“
Ja:“+tajm+”“+newtext+”;
$(“#文本框”).scrollTop($(“#文本框”)[0]。scrollHeight);
});
});
功能时间(){
var ajax=new-XMLHttpRequest();
ajax.onreadystatechange=函数(){
if(ajax.readyState==4){
tajm=ajax.responseText;
}
};
open(“GET”,“r.php”,true);
send(null);
}
AJAX是异步的
回调只在其余代码完成后运行一段时间。由于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);
}
});
});
$(文档).ready(函数(){
$(“#submitmsg”)。单击(函数(){
$.load(“r.php”,function()){
var newtext=$(“#textmsg”).val();
var oldtext=document.getElementById(“textbox”).innerHTML;
document.getElementById(“textbox”).innerHTML=oldtext+“
Ja:“+tajm+”“+newtext+”;
$(“#文本框”).scrollTop($(“#文本框”)[0]。scrollHeight);
}
});
});
注意:设置超时正在工作,因为您正在等待加载ajax调用。异步HTTP请求需要时间。如果代码以“正常”顺序执行,则不必提供回调(
ajax.onreadystatechange
)。我通过添加setTimeout并将其延迟一段时间来修复此问题。是否有更有效的方法可以使用@xtra完成此操作?@xtra是的--在回调中完成它所属的工作。