2012-01-18 3 views
3

私は2つのファイルのサンプルを使ってajaxを練習しています。 This Siteのコードをコピーしましたが、実行しようとすると、Javascript Consoleで次のエラー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

+0

phpファイルとhtmlファイルが同じフォルダに置かれていますか?しかし、URLに追加する前に 'str'でencodeURIComponentを使用してエンコードする必要があります。 –

答えて

0

私は絶望的にこの1つだけのような問題に頭をバッシングしてDr.Molleが言ったものでしたコメントで私は助けてくれました。

私は、AJAX用のJava Scriptがある別のPHP(上記のコードのように "son"ファイルを "livesearch.php"と呼ぶことができます)を含むPHP( "親"ファイル)を持っています。

私はここで基本的にサソリと同じコードを持っていた:

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

をしかし、それは次のようになります。

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

私の場合、メインのPHPページは "parent.php" であるため、 "livesearch.php"ではありません。

私はそれが助けてくれることを願っています!

関連する問題