0

データベースからドロップダウンを入力しようとしました。結果をクエリして配列に追加します。次に、json_encode を使用してデータを php ファイルに送信します。

$query="SELECT project FROM main";
$results = $db->query($query);
while ($row_id = $results->fetchArray()) {
       $proj_option[] = "<option value=\"".$row_id['project']."\">".$row_id['project']."</option>\n";
       $pselected=$row_id['project'];
}
$output = array( "proj" => $proj_option);
echo json_encode($output);

私のphpファイルでは、jquery ajaxを使用してドロップダウンを埋めています。

$("#turninId").change(function() {

    var user_id = $("#turninId").val();

    $.ajax ( {
      url:"send_input.php",
      type: "POST",
      dataType: "json",
      data:{id_selection: user_id},
      success:function(response) {

        for (var i=0; i<response.proj.length; i++) {
          $("#exp").html(response.proj[i]);
          $("#project").html(response.proj[i]); } });

 });

これは素晴らしいことですが、ドロップダウンの唯一の項目はデータベースの最後の項目です。たとえば、私のデータベースには Project の下に次の項目があります。

Project: up, down, low, right

しかし、私のドロップダウンは最後のエントリ「右」でしか埋められません。どうしてこれなの?どうすれば修正できますか?

while ループの PHP json_encode()も同様で、変更を加えましたが、ここに何かが欠けています。

4

2 に答える 2

1

これを試してみるかもしれません

success:function(response) {

  $.each(response.proj,function(key,value){
      $("#exp").append(value);
      $("#project").append(value);
  });

}
于 2012-07-31T18:29:52.283 に答える
0

JavaScriptでループするたびに、htmlを上書きしています。.html() メソッドはタグの innerHTML プロパティを設定するため、呼び出すたびに html がリセットされ、最後の 1 つだけが表示されます。ループを使用しないでください。代わりに、応答を結合してから .html() を呼び出します

$("#exp").html(response.proj.join(''));
$("#project").html(response.proj.join(''));
于 2012-07-31T18:27:52.013 に答える