ajaxを使用してデータベースからデータを取得するために使用される単純なテキスト入力ボックスを作成しました。
<form method="post" action="">
<input type="text" id="txt1" onkeyup="showHint(this.value);" />
</form>
テキスト ボックスは、次のように ajax.js ファイルで showHint(str) という ajax 関数を呼び出します。
function showHint(str){
var xmlhttp;
if (str.length==0)
{
document.getElementById("txtHint").innerHTML="";
return;
}
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","index.php?page=getList&q="+str,true);
xmlhttp.send();
}
上記のスクリプトからわかるように、次のようにデータベースから詳細を取得するために使用される PHP スクリプトが開きます。
//get the q parameter from URL
$q = $_GET["q"];
$sql = "SELECT Name FROM Country WHERE Name LIKE '" . $q . "%'";
$recordSet = $_dbConn->query($sql);
$a = $recordSet->getrow();
//lookup all hints from array if length of q>0
if (strlen($q) > 0)
{
$hint="";
for($i=0; $i<count($a); $i++)
{
if (strtolower($q)==strtolower(substr($a[$i],0,strlen($q))))
{
if ($hint=="")
{
$hint=$a[$i];
}
else
{
$hint=$hint." , ".$a[$i];
}
}
}
}
// Set output to "no suggestion" if no hint were found
// or to the correct values
if ($hint == "")
{
$response="no suggestion";
}
else
{
$response=$hint;
}
//output the response
echo $response;
問題は、私が単一の Index.php ページを使用しているため、次の行: "index.php?page=getList&q="+ は、www.mydomain.com/index.php?index.php?page=getLet と言っているようなものです。 $q。
どうすればこれを修正できますか? POST を使用しようとしましたが、まだ機能しません。私はJSのindex.php部分も消去しようとしましたが、それもうまくいきません...ありがとう