在过去的几个小时里,我一直在尝试使用jQuery append()将来自XHR responseText的内容附加到div元素(带有ID)。
我已经验证我正在获取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 :(得分: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;
使用您拥有的代码,因为所有变量都是全局变量。
每当使用括号编写函数时,都会执行函数。
答案 1 :(得分:0)
这一行:asyncajaxrequest.onreadystatechange = fetchasyncClientData_Handler();
没有设置onreadystatechange处理程序使用fetchasyncClientData_Handler
函数,它设置事件处理程序使用函数的RESULT。
应该是:
asyncajaxrequest.onreadystatechange = fetchasyncClientData_Handler;
最后没有括号。