2

私はAJAXに非常に慣れていません。AJAX によって生成された選択ボックスの値を PHP ファイルから取得しようとしています。私がやろうとしていることの例を挙げましょう:

firstPage.html には以下が含まれます。

<form action="next.php" method="post">
<select name=cat id=cat onchange=load_sub_cat(this.value)>
<option value=0 selected=selected >Select Category</option>
<option id=1 value=1>A  </option>
<option id=2 value=2>B  </option>
<option id=3 value=3>C  </option>
</select>

<div id=sub_cat>---Select--Subcategory---</div>
<script>
function load_sub_cat(str){
                var xmlhttp;
                xmlhttp=new XMLHttpRequest();
                xmlhttp.open("get","getData.php?q="+str,false);
                xmlhttp.send();
                document.getElementById("sub_cat").innerHTML=xmlhttp.responseText;
            }
</script>

getData.php には以下が含まれます。

<?php
$q=$_GET['q'];
//Some database calls……………………………
$html="<select name=sub>";
$html.="<option value=1>Test 1</option>";//Populating the options from database
$html.="</select>";
?>

next.php で、「サブ」選択ボックスを使用して送信された値を取得しようとしています。私は持っている:

<?php
echo $_POST['cat'];
echo $_POST['sub'];
?>

猫の選択ボックスを選択してサブ選択ボックスを完全に取得していますが、フォームを送信した後、 $_POST['sub'] で何も取得しません。私は $_POST['cat'] を取得します。ヘルプまたはチュートリアルのリンクをいただければ幸いです。

4

2 に答える 2

0

1)getData.phpで変数を作成しますが、ブラウザに$htmlは表示されませんecho

...
...
$html.="</select>";
echo $html; // <-- echo it!

2)あなたの ajax が間違っています。send()XHRのメソッドを呼び出した直後に応答テキストを取得することはできません。onreadystatechangeイベントをリッスンする必要があります。

 xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
        document.getElementById("sub_cat").innerHTML=xmlhttp.responseText;
    }
  }

3) HTML 属性を引用符で囲む必要があります。

onchange="load_sub_cat(this.value)"

4)終了</form>タグがないようです。フォーム入力が含まれるため、必ず divのにフォームを閉じてください。sub_cat

于 2013-01-05T16:36:41.940 に答える
0

フォームの html タグを閉じたことを確認してください: after ... put

于 2013-01-05T16:38:13.330 に答える