2011-01-18 3 views
1

javascript에서 XMLhttpRequest를 사용하여 웹 사이트의 소스 코드를 가져 오려고하지만 응답을 얻을 수 없습니다. XMLhttpRequest를 사용하여 소스 코드를 얻으려면 어떻게해야합니까? 당신은 "REQ"라는 변수에 XHR 객체를 설정javascript에서 XMLhttpRequest를 사용하여 소스 코드 검색

<script language="Javascript" type="text/javascript"> 
var req = new XMLHttpRequest(); 
req.open(
    "GET", 
    "http://www.google.com", 
    true); 
req.onreadystatechange = statusListener; 
req.send(null); 

function statusListener() 
{ 
if (req.readyState == 4) 
    { 
     var docx=req.responseXML; 
     alert(docx); 
    } 
} 
</script> 

답변

0

지정된 if 문 대신 사용하십시오. 당신은 상태가 확인되어 있는지 확인하는 검사를하지 않는

if (req.readystate == 4) { 
     if (req.status == 200) { 
      var docx=req.responseXML;   
      alert(docx); 
      //Can also try this just in case: 
      //var doc = req.responseText; 
      //alert(doc); 
     } 
    } 

,이 스크립트가 이후 (오프 디버깅 할 경우 당신이 그것 때문에되는 자바 스크립트에 표시되지 않을 수 있습니다) 오류를 반환하여 실패 할 수있다 준비 상태가 4이고 상태 코드가 200이 될 때까지 응답이 준비되지 않습니다. 또한 responseXML이 올바르게 작동하지 않으면 responseText를 시도합니다.

0

,하지만 콜백는 "XMLHTTP"를 사용하여 여기에 내가 지금 가지고있는 것입니다.

+0

죄송합니다. 코드를 복사하여 붙여 넣을 때 실수였습니다. 그것은 올바른 경우에도 여전히 작동하지 않습니다. –

+0

@SLaks가 쓴 것처럼, 코드가 포함 된 페이지의 도메인이 컨텐트가있는 도메인과 다를 경우 컨텐트를 가져올 수 없습니다. – Pointy

0

당신은 당신의 페이지가 아닌 다른 도메인에 XMLHttpRequest를 할 수 없어,하지만 당신은 여전히 ​​도메인의 프록시 스크립트의 내용을 검색 할 수 있습니다

#proxy-script (proxy.php) 
<?php 
echo file_get_contents ($_GET['url']); 
?> 

그리고 당신의 자바 스크립트는 다음과 같아야합니다

<script language="Javascript" type="text/javascript"> 
var myUrl = "http://www.google.com"; 
var req = new XMLHttpRequest(); 
req.open(
    "GET", 
    "/proxy.php?url="+encodeURIComponent(myUrl), 
    true); 
req.onreadystatechange = statusListener; 
req.send(null); 

function statusListener() 
{ 
if (xmlhttp.readyState == 4) 
    { 
     var docx=xmlhttp.responseXML; 
     alert(docx); 
    } 
} 
</script> 
+0

을 제외하고는 원본에서 오류를 수정하고 싶을 것입니다. 즉, XHR 객체는 "req"라고하지만 콜백은 "xmlhttp"라고합니다. – Pointy

+1

'$ _GET [ 'url']'에있는 파일에 대한 file_get_contents 호출의 보안 함의를 언급하고 싶습니다. 왜냐하면 모든 서버 측 코드를 검색하는 데 사용할 수 있기 때문입니다. –

관련 문제