2012-08-14 5 views
0

다양한 온라인 소스를 사용하여이 코드를 작성했지만 마지막 부분을 파악할 수 없습니다.아약스를 사용하여 HTML 문서를 요소에 추가

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 파일을 가져 오는 중 어떻게 내 페이지에 게시 할 수 있습니까? 내가 도대체 ​​뭘 잘못하고있는 겁니까?

도움 주셔서 감사합니다.

+1

당신이 그것을 잘 랩 jQuery를 또는 뭔가를 사용하여 스크래치, 그에서 XHR을 작성하는 선택하고 이유가 있습니까 :이 같은 onreadystatechange 기능에 content.innerHTML = xhr.responseText; 라인을 이동할 수 있습니다 경우에 작동합니다 다른 좋은 기능이 많이 있습니까? – Paul

+0

jQuery를 사용하고 싶지 않습니다. 학습 목적 및 "순수한"JS를 사용하는 것이 더 깔끔하기 때문에. jQuery를 사용하면 라이브러리없이 처음부터 자바 스크립트를 작성할 수 없습니다. :) – cmplieger

+1

학습을 위해 좋습니다. 하지만 프로덕션에서는 잘 테스트 된 코드를 다시 사용하여 프로젝트에서 얻게되는 것이 많습니다. – Paul

답변

2

ajax 호출은 비동기입니다.

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]; 

} 
+0

위대한 응답, 나는 왜 당신이 * innerHTML 호출을 이동해야하는지에 대한 설명을 포함 시켰 으면 좋겠다. 덕분에 – Paul

+0

. 여전히 작동하지 않는 것 같지만 뭔가있을 수 있습니다 : - /. btw, xhr.open하면 안됩니다 ('GET', this.href, true); 상태 = 200이 될 수도 있습니까? – cmplieger

+1

@SnippetSpace :'xmlhttp.send();'가 누락 되었습니까? –

1

contet.innerHTML을 상태 200 상태로 만드십시오.

실제로 존재하기 전에 콘텐츠에 값을 할당하는 것입니다. 아약스가 서버에서 가져 오기 전에.

관련 문제