2013-04-18 3 views
0

Я хочу использовать jQuery для заполнения второго окна выбора и текстового поля. У меня есть вторая ячейка выбора, которая правильно заполняется, когда выбор сделан в первом. Однако я не смог заставить его заполнить текстовое поле.jQuery выпадающий, чтобы заполнить второе раскрывающееся меню и текстовое поле

Данные извлекаются из базы данных MySQL. Ниже приведен код, который я работаю для первого блока выбора, чтобы сделать выбор во втором.

Мой код 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 код лучше после того, как Я получаю эту работу.

Любые предложения о том, как получить выбор в первом поле выбора, чтобы заполнить второй флажок выбора, и текстовое поле будет отличным.

Извините, если форматирование выключено; Я слепой, поэтому я не уверен, как он выглядит на экране.

ответ

0

Файл, к которому обращается .load(), должен возвращать HTML-код, который нужно сбрасывать в данный элемент. У вас есть возвращение JSON по неизвестной причине. Удалите это и раскомментируйте параметры вывода строки.

В качестве альтернативы вместо использования .load() используйте полный вызов AJAX и выполните итерацию по возвращенному JSON, чтобы вставить параметры таким образом.

Смежные вопросы