使用jQuery Append和XHR ResponseText

时间:2012-08-12 17:03:50

标签: jquery ajax xmlhttprequest responsetext

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

2 个答案:

答案 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;

最后没有括号。

相关问题