2012-01-18 103 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”。

我希望它有帮助!