0

jQuery を使用して、2 番目の選択ボックスとテキスト フィールドにデータを入力したいと考えています。最初の選択ボックスで選択が行われると、2 番目の選択ボックスが正しく入力されます。ただし、テキストフィールドに入力することはできませんでした。

データは MySQL データベースから取得されます。以下は、最初の選択ボックスで2番目の選択を行うために作業しているコードです。

私のjQueryコード:

<script>
$(document).ready(function(){
  $("#shipment").change(function() {
    $("#vender").load("selection.php", $("#shipment"));
  }).trigger("change");
});
</script>

これに関連するフォーム フィールド:

<html>
<label for="shipments">Shipment: </label><select id="shipment" name="shipment_id">
<?php if(isset($shipment_selection)) { echo $shipment_selection; } ?> //echos options from db.
</select>
<label for="vender">Vender: </label><select id="vender" name="vender_id"></select>
<label for="cost">Cost: </label>><input type="text" id="cost" name="cost" value="" />
</html>

データを取得する PHP スクリプト:

<?php
include('../scripts/db_config.php');

if(isset($_POST['shipment_id'])) {
    if($_POST['shipment_id'] == 1) {
    $sql = 'SELECT id AS vender_id, name AS vender_name FROM venders'; //shows all venders, when shipment is none.
    }
else {
$sql = 'SELECT venders.id AS vender_id, venders.name AS vender_name, shipment.qty AS qty, shipment.cost AS cost FROM shipments INNER JOIN venders ON venders.id=shipments.vender_id WHERE shipments.id='.$_POST['shipment_id']; //Select vender associated with specific shipment.
}
$stmt = $db->query($sql);
$data = array();
    while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    $data[] = $row;
    //echo '<option value="'.$row['vender_id'].'">'.$row['vender_name'].'</option>'; //populates second select box.
    }
echo json_encode($data);
}

これが機能するようになったら、PHP コードをより安全に保護します。

最初の選択ボックスで選択内容を取得して 2 番目の選択ボックスにデータを入力する方法と、テキスト フィールドについての提案は素晴らしいでしょう。

フォーマットがオフの場合はお詫びします。私は盲目なので、実際に画面上でどのように見えるかわかりません。

4

1 に答える 1

0

によってアクセスされるファイル.load()は、指定された要素にダンプされる HTML を返す必要があります。なんらかの理由で、JSON を返します。それを削除し、オプションを出力する行のコメントを外します。

または、 を使用する代わりに.load()、完全な AJAX 呼び出しを使用し、返された JSON を繰り返し処理して、その方法でオプションを挿入します。

于 2013-04-18T15:49:55.563 に答える