2012-08-12 45 views
0

在過去的幾個小時裏,我一直試圖使用jQuery append()將XHR responseText中的內容附加到div元素(帶有ID)。使用jQuery Append和XHR ResponseText

我已經驗證了我得到的responseText回來,所有變量都是正確的,等等。我認爲它與嘗試追加responseText(這是HTML)有關。

function fetchasyncClientData_Handler() { 
    if (asyncajaxrequest.readyState==4 && asyncajaxrequest.status==200){ 
     $("#clientList").append(asyncajaxrequest.responseText); 
    } 
} 

lastClientID = $("#clientList_Row input").last().val(); 

asyncajaxrequest = new XMLHttpRequest(); 
asyncajaxrequest.onreadystatechange = fetchasyncClientData_Handler(); 
asyncajaxrequest.open("GET", "fetchLatestClientList.php?id=" + lastClientID); 
asyncajaxrequest.send(); 

關於這個問題可能有什麼想法?我不想使用jQuery.ajax()庫/函數,我可以提到。

回答

0

您應該將請求傳遞給fetchasyncClientData_Handler函數,爲此您需要用括號調用函數,您可以在readystate事件中單獨調用函數,然後使用該函數檢查請求調用fetchasyncClientData_Handler函數之前成功:

function fetchasyncClientData_Handler(req) { 
    $("#clientList").append(req.responseText); 
} 

var lastClientID = $("#clientList_Row input").last().val(); 

var asyncajaxrequest = new XMLHttpRequest(); 
    asyncajaxrequest.onreadystatechange = function() { 
     if (asyncajaxrequest.readyState==4 && asyncajaxrequest.status==200){ 
      fetchasyncClientData_Handler(asyncajaxrequest); 
     } 
    } 
    asyncajaxrequest.open("GET", "fetchLatestClientList.php?id=" + lastClientID); 
    asyncajaxrequest.send(); 
​ 

你可以只嘗試調用該函數像這樣來代替:

asyncajaxrequest.onreadystatechange = fetchasyncClientData_Handler; 

與你的代碼,因爲所有的變量都是全局的反正。

無論何時使用圓括號編寫函數,都會執行該函數。

+0

工作,謝謝! – user1593712 2012-08-12 17:22:14

0

此行:asyncajaxrequest.onreadystatechange = fetchasyncClientData_Handler();未將onreadystatechange處理程序設置爲使用fetchasyncClientData_Handler函數,而是將事件處理程序設置爲使用該函數的RESULT。

它應該是:

asyncajaxrequest.onreadystatechange = fetchasyncClientData_Handler; 

結尾沒有括號。

+0

工作也很完美。 – user1593712 2012-08-12 17:28:28