我試圖傳遞一個點擊DIV的ID到一個特定的函數,我碰到了一個奇怪的結果。由於錯誤狀態被觸發(ajax-loader.gif),該ID使其成功進入該函數,並將自身填充到啓動自循環的DIV中。通過單擊元素的ID與AJAX傳遞錯誤
但是,我不明白爲什麼AJAX返回一個未完成的就緒狀態。如果我用ID的硬編碼名稱替換'clicked_id',它會正常工作。但是,事實證明ID名稱正確地將它傳遞給函數,因爲錯誤事件正在所提供的ID的innerHTML中填充。
我很難過。有任何想法嗎?我敢肯定這是一個小菜鳥的錯誤,但我無法發現它。
我已經在腳本中發起了一個新的XMLHTTPRequest,爲了簡潔起見,我只是將其留出。我知道有可能更簡單的方法來做到這一點,如jQuery的點擊事件,但爲了我自己的利益,我想知道爲什麼這會被打破。
<div class='colour'><img src='media/recipe_save.jpg' id='showtime' onclick='javascript:getServerTime(this.id);'></div>
function getServerTime(clicked_id) {
var thePage = 'ajax.recipesave.php';
myRand = parseInt(Math.random()*999999999999999);
var theURL = thePage +"?rand="+myRand;
myReq.open("GET", theURL, true);
myReq.onreadystatechange = theHTTPResponse(clicked_id);
myReq.send(null);
}
function theHTTPResponse(clicked_id) {
alert(clicked_id);
if (myReq.readyState == 4) {
if(myReq.status == 200) {
var timeString = myReq.responseXML.getElementsByTagName("timestring")[0];
document.getElementById(clicked_id).innerHTML = timeString.childNodes[0].nodeValue;
}
} else {
document.getElementById(clicked_id).innerHTML = '<img src="media/ajax-loader.gif"/>';
}
}
太棒了!我知道這是基本的。非常感謝,非常感謝你描述了jfriend00背後的推理。 – 2011-12-17 14:31:47