2012-01-18 112 views
3

我正在使用2個文件的示例來練習ajax。我從This Site複製了代碼,但是當我嘗試運行它時,它在Javascript控制檯中給出了以下錯誤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> 

PHP文件

<?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 2012-01-18 06:40:18

+0

你確定php文件和html文件被放置在同一個文件夾中嗎?然而,你應該在'str'上使用encodeURIComponent對它進行編碼,然後再將它附加到URL中。 – 2012-01-18 06:45:43

回答

0

我撲我的頭一個問題就這樣一個絕望和一些Dr.Molle說在評論幫助我。

我有一個PHP(「父」文件),其中包括另一個PHP(「兒子」文件可以稱之爲「livesearch.php」,如上面的代碼中)AJAX的Java腳本。

我有同樣的代碼基本上蠍子在這裏:

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

但它應該是:

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

因爲在我的情況下,主PHP頁面是 「parent.php」不是「livesearch.php」。

我希望它有幫助!