0

ここ数時間、jQueryのappend()を使用して、XHR responseTextからdiv要素(IDを含む)にコンテンツを追加しようとしています。

responseTextが返されること、すべての変数が正しいことなどを確認しました。これは、HTMLであるresponseTextを追加する試みと関係があると思います。

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 に答える