我掙扎了一段時間,我無法找到此代碼無法工作的原因。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