2011-08-11 14 views
0
次で

AJAXおよびDOM機能の誤動作

xmlhttp.responseText;//createDisplayElement() 

の表示コンテナを作成するためのメソッドを呼び出そうとし

:FFのエラーコンソールに JS BIN Document

エラーなし、しかし動作がありますオフにして、ページを適切にリフレッシュしないでください。

答えて

1

への参照を欠いています。

  1. objが正しく定義されていません。
  2. p要素にプレーンテキスト(xmlhttp.responseText)が追加されています。

両方とも以下のように修正されています。

これを試してみてください

function makerequest(serverPage, objID) 
{ 

    xmlhttp.open("GET", serverPage); 
    xmlhttp.onreadystatechange = function(){ 

     if(xmlhttp.status == 200 || xmlhttp.readyState == 4){ 

      createDisplayElement(objID); 
     } 
    }; 

    xmlhttp.send(null); 
} 

function createDisplayElement(objID){ 
    var obj = document.getElementById(objID); 
    var para = document.createElement("p"); 
    obj.appendChild(para); 
    var txtNode = document.createTextNode(xmlhttp.responseText); 
    para.appendChild(txtNode); 

} 
+0

の提案を実装した後、HTMLは文字通り解釈にロードされます。すべてのHTML要素が印刷されます。 – Wasabi

+0

具体的にしてください。あなたのajax呼び出しからHTMLを返していますか?もしそうなら、para.innerHTML = xmlhttp.responseText –

+0

はい、そのファイルはHTMLスニペットですが、私はinnerHTMLを避けることを望んでいます。これは問い合わせの理由です – Wasabi

1

objのように見えるのは、関数のコンテキストで不適切に定義されている可能性があります。代わりにthisをお試しください:

// It is called as: 
obj.createDisplayElement(); 


// But the function also uses obj 
function createDisplayElement(){ 

    var para = document.createElement("p"); 
    this.appendChild(para); 
    //^^^^^^ 
    var txt = xmlhttp.responseText; 
    para.appendChild(txt); 
} 
1

この機能は、私は、コードで2つの問題を参照してくださいobj

function createDisplayElement(){ 

    var para = document.createElement("p"); 
    obj.appendChild(para); 
    var txt = xmlhttp.responseText; 
    para.appendChild(txt); 

} 
関連する問題