0

在过去的几个小时里,我一直在尝试使用 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() 库/函数,我可以提一下。

4

2 回答 2

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;

使用您拥有的代码,因为无论如何您的所有变量都是全局的。

每当您使用括号编写函数时,您都会执行该函数。

于 2012-08-12T17:14:20.423 回答
0

这一行: asyncajaxrequest.onreadystatechange = fetchasyncClientData_Handler();不是将 onreadystatechange 处理程序设置为使用该fetchasyncClientData_Handler函数,而是将事件处理程序设置为使用该函数的 RESULT。

它应该是:

asyncajaxrequest.onreadystatechange = fetchasyncClientData_Handler;

最后没有括号。

于 2012-08-12T17:17:46.087 回答