0

こんにちは、フォームにフィールドを追加したり、フォームに入力するための [送信] ボタンを追加したりするには、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

4

3 に答える 3

0

このフォームを ajax のみで送信しないでください。これにより、リフレッシュの問題が解決するはずです

于 2012-07-10T12:50:38.943 に答える
0

問題はあなたが戻ってくることです

echo ('<input type="hidden" name="suburbID" value="'.$row['ID'].'">');

WHILE ループで。つまり、同じname="suburbID"値と異なる値を持つ複数の html 要素を持つことになります。フォームを送信すると、他の値を上書きする最後の値が常に取得されます。

于 2012-07-10T13:47:33.740 に答える