0

私はさまざまなオンラインソースを使用してこのコードを作成しましたが、最後の部分を理解できないようです。

function loadajax (event) {
    event.preventDefault();
    xhr = new XMLHttpRequest();
    xhr.onreadystatechange  = function(){ 
        if(xhr.readyState  == 4){
            if(xhr.status  == 200) 
                document.ajax.dyn="Received:"  + xhr.responseText; 
            else
                document.ajax.dyn="Error code " + xhr.status;
        }
    }; 

    xhr.open('GET', this.href, true);
    var content = document.getElementsByTagName('article')[0];

    content.innerHTML = xhr.responseText;
}

ページにコンテンツを追加する必要があるまでは機能するようです。確かcontent.innerHTML = xhr.responseText;に何も返しません。簡単なHTMLファイルを取得していますが、ページに投稿するにはどうすればよいですか?私は何が間違っているのですか?

ご協力いただきありがとうございます!

4

2 に答える 2

3

ajax呼び出しは非同期です。次のような関数にcontent.innerHTML = xhr.responseText;行を移動すると機能します。onreadystatechange

function loadajax (event) {
event.preventDefault();
xhr = new XMLHttpRequest();
 xhr.onreadystatechange  = function() 
    { 
       if(xhr.readyState  == 4)
       {
        if(xhr.status  == 200) 
            document.ajax.dyn="Received:"  + xhr.responseText; 

            content.innerHTML = xhr.responseText;
        else
            document.ajax.dyn="Error code " + xhr.status;
        }
    }; 

xhr.open('GET', this.href, true);
var content = document.getElementsByTagName('article')[0];

}
于 2012-08-14T15:00:15.933 に答える
1

contet.innerHTMLをステータス200の状態にします。

コンテンツが実際に存在する前に、コンテンツに値を割り当てるだけです。ajaxがサーバーから取得する前。

于 2012-08-14T15:00:07.603 に答える