こんにちは、フォームにフィールドを追加したり、フォームに入力するための [送信] ボタンを追加したりするには、AJAX の結果が必要です。
AJAX の結果は、(PHP ファイルから) 標準の HTML フォーム内にある DIV に表示されます。FORM タグ内で返される場合、AJAX の結果 (隠し入力など) を FORM POST に含めることはできますか??
AJAXresults.php から AJAX 結果を取得するために、標準の JavaScript (「livesearch」用に投稿されたものから適合) を使用しています。JavaScriptは次のとおりです。
function showResult(str)
{
if (str.length<4)
{
document.getElementById("suburbmatch").innerHTML="Type more than 4 letters...";
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("suburbmatch").innerHTML=xmlhttp.responseText;
}
}
xmlhttp.open("GET","AJAXresults.php?suburbtext="+str,true);
xmlhttp.send();
}
myphp.php には、次のようなフォームが含まれています: (FORM タグ内の AJAX 結果が読み込まれる DIV に注意してください)
<form action="myphp.php" method="POST">
<input type="text" name="addressline1">
<input type="text" name="addressline2">
<input type="text" name="suburb" onkeyup="showResult(this.value)">
<div id=suburbmatch></div> // AJAX results display here
</form>
AJAXresults.php には、データベースにクエリを実行し、結果を非表示の入力フィールドとして返すスクリプトと、SUBMIT ボタンが含まれています。
echo ('<input type="hidden" name="suburbID" value="'.$row['ID'].'">');
echo ('<input type="submit" name="submit" value="');
echo ($row['suburb'].' '.$row['state'].' '.$row['zipcode']);
echo ('"><br>');
このコードは WHILE ループ内にあるため、myphp.php の「郊外」テキスト入力に入力されたテキストに一致する「郊外」は、郊外/州/郵便番号を表示するボタンとして読み込まれます。クリックすると、AJAX 結果からの非表示の INPUT を含む myphp.php のフォーム全体が送信されます。
(a href=myphp.php?result=x) のように、結果をテキストとして返し、データを $_GET でハイパーリンクすることもできますが、ページが更新され、他のフォーム値がリセットされます :P