2012-08-12 44 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