2012-01-18 6 views
3

아약스 연습을 위해 2 개의 파일 샘플을 사용하고 있습니다. This Site에서 코드를 복사했지만 실행하려고하면 자바 스크립트 콘솔에서 다음 오류 404 Not Found가 발생합니다. 여기 내 HTML과 PHP 코드입니다 : -xmlhttp.send()가 404를 찾을 수 없음 (Ajax)

HTML 파일은

<html> 
<head> 
<script type="text/javascript"> 
function showResult(str){ 
if (str.length==0) 
    { 
    document.getElementById("livesearch").innerHTML=""; 
    document.getElementById("livesearch").style.border="0px"; 
    return; 
    } 
if (window.XMLHttpRequest) 
    {// code for IE7+, Firefox, Chrome, Opera, Safari 
     xmlhttp=new XMLHttpRequest(); 
    } 

    xmlhttp.onreadystatechange=function() 
    { 
     if (xmlhttp.readyState==4 && xmlhttp.status==200) 
      { 
      document.getElementById("livesearch").innerHTML=xmlhttp.responseText; 
      document.getElementById("livesearch").style.border="1px solid #A5ACB2"; 
      } 
    } 
    xmlhttp.open("GET","livesearch.php?q="+str,true); 
    xmlhttp.send(); 
    } 
</script> 
</head> 
<body> 
<form> 
    <input type="text" size="30" onkeyup="showResult(this.value)" /> 
    <div id="livesearch"></div> 
</form> 

</body> 
</html> 

난 그냥 Dr.Molle 말했다이 희망 한 뭔가 같은 문제로 내 머리를 강타했다

<?php 
$xmlDoc=new DOMDocument(); 
$xmlDoc->load("http://localhost/php/ajax/links.xml"); 

$x=$xmlDoc->getElementsByTagName('link'); 
//get the q parameter from URL 
$q=$_GET["q"]; 

//lookup all links from the xml file if length of q>0 
if (strlen($q)>0) 
{ 
    $hint=""; 
    for($i=0; $i<($x->length); $i++) 
    { 
    $y=$x->item($i)->getElementsByTagName('title'); 
    $z=$x->item($i)->getElementsByTagName('url'); 
    if ($y->item(0)->nodeType==1) 
    { 
    //find a link matching the search text 
    if (stristr($y->item(0)->childNodes->item(0)->nodeValue,$q)) 
    { 
    if ($hint=="") 
    { 
    $hint="<a href='" . 
    $z->item(0)->childNodes->item(0)->nodeValue . 
    "' target='_blank'>" . 
    $y->item(0)->childNodes->item(0)->nodeValue . "</a>"; 
    } 
    else 
    { 
    $hint=$hint . "<br /><a href='" . 
    $z->item(0)->childNodes->item(0)->nodeValue . 
    "' target='_blank'>" . 
    $y->item(0)->childNodes->item(0)->nodeValue . "</a>"; 
    } 
    } 
    } 
    } 
} 
if ($hint==""){ 
$response="no suggestion"; 
} 
else{ 
    $response=$hint; 
    } 

//output the response 
echo $response; 
?> 
+1

livesearch.php가 동일한 컴퓨터에서 호스팅되고 있습니까? 크로스 도메인 AJAX 요청은 보낼 수 없다는 것을 기억하십시오 (쉽게). – styfle

+0

php 파일과 html 파일이 같은 폴더에 있는지 확인 하시겠습니까? 그러나 URL에 추가하기 전에 인코딩하기 위해'str'에 encodeURIComponent를 사용해야합니다. –

답변

0

PHP 파일 의견에 나를 도왔습니다.

나는 AJAX 용 자바 스크립트가있는 다른 PHP ("son"파일은 위의 코드에서 "livesearch.php"라고 부를 수 있음)를 포함하는 PHP ("상위"파일)를 가지고 있습니다.

xmlhttp.open("GET","parent/livesearch.php?q="+str,true); 

를 내 경우에는 주 PHP 페이지는 "parent.php"이기 때문에, :

는 여기 전갈로 기본적으로 동일한 코드를했다 :

xmlhttp.open("GET","livesearch.php?q="+str,true);

그러나 그것은해야 "livesearch.php"가 아닙니다.

도움이 되었기를 바랍니다.

관련 문제