Я пытаюсь отобразить таблицу MySQL в форме формы листа задания, которую я делаю в раскрывающемся списке, показывает детали клиента, а затем после того, как выбранные поля должны быть заполнены на основная форма.Выпадающий список для массива JavaScript для заполнения текстовых полей
Я знаю, что люди склонны использовать AJAX, но это предназначено для использования на планшете, привязанной к мобильному телефону, и вы хотите попросить сервер как можно меньше.
Поскольку у меня уже есть детали из SQL, чтобы отобразить раскрывающийся список, я думал, что смогу использовать это. Я нашел исходный код по адресу:
, но я также хочу, чтобы отобразить элементы, которые не в списке. Кто-то сказал, что это работает, но чем больше я узнал, я не мог понять, как из-за того, что массив, который он строит, похоже, не был в формате JavaScript.
У меня есть выпадающий рабочий стол, а также он заполняет массив JavaScript, используя имена, но я просто не могу понять, как использовать массив для отображения в полях.
Это, по-видимому, именованные индексы, используемые в массиве. Я могу получить тестовый массив для отображения, когда я использую обычный статический массив, но я прокомментировал их, но как только я попытаюсь использовать имена в массиве, я получаю неопределенные ошибки.
<html>
<head>
<script type="text/javascript">
<?php
include_once 'includes/db_connect.php';
$query1 = "SELECT * FROM customer";
$result1 =($mysqli-> query($query1));
// build javascript array building an object
// build javascript array
while($row=mysqli_fetch_array($result1)){
echo 'customer['.$row['customer_id'].'] = new Array(';
echo 'customer['.$row['customer_id'].'][customer_id] = "'.$row['customer_id'].'";';
echo 'customer['.$row['customer_id'].'][post_code] = "'.$row['post_code'].'";';
echo 'customer['.$row['customer_id'].'][company_name] = "'.$row['company_name'].'");';
}
?>
</script>
</head>
<body>
<form name="customerform" form id="customerform">
<p>
<select name="customerselect" id="customerselect" onChange="showname()">
<option value="">Select customer</option>
<?php
$query1 = "SELECT * FROM customer";
$result1 =($mysqli-> query($query1));
// build javascript array
while($row=mysqli_fetch_array($result1)){
echo'<option value="'.$row['customer_id'].'">'.$row['forename'].'">'.$row['surname'].'">'.$row['customer_name'].'</option>';
}
?>
</select>
</p>
<p>
<input type="text" name="cust" value="" id="cust" />
<input type="text" name="cust" value="" id="customerselected" />
<input type="text" name="post_code" value="" id="post_code" />
</p>
<p>update
<input type="button" name="update" id="update" value="update" onClick="showname()">
<p> </p>
<p>
<input name="submit" type="submit" id="submit" value="submit" />
</p>
</form>
</body>
<script>
//var customer = Array();
var customer = Array();
//This below is a test multi dimensional Array which does work. //
//customer['CCS'] = Array[{forename:'Robert', surname:'Grain', company:'HOMS'}];
function showname() {
//this var takes the result of the selected drop down list and shows the correct part of the array.
var customerselected = document.getElementById('customer');
customername = customerselected.value;
// this does work but not from the array just fills the details up
document.customerform.customerselected.value = customername;
// the next part takes the selected dropdown data and calls for the correct place in the array
// document.getElementById("cust").value = customer['CCS'][0];
// document.getElementById("cust").value = customer[CCS]["forename"] ;
// (customer[''][forename]);
document.customerform.post_code.value = customer[customerselect]["post_code"];
}
window.onload=function() {
showname();
}
</script>
</html>
Это исходный код из Проводника в консоли. из массива JavaScript.
</body>
</html>customer[118] = new Array(customer[118][customer_id] = "118";customer[118][post_code] = "L37 4RG";customer[118][company_name] = "jc knight");customer[119] = new Array(customer[119][customer_id] = "119";customer[119][post_code] = "DE56 7HG";customer[119][company_name] = "farm Customer giles");customer[122] = new Array(customer[122][customer_id] = "122";customer[122][post_code] = "LE67 8FH";customer[122][company_name] = "a test company");
Также этот выпадающий список создает:
<select name="customerselect" id="customer" onChange="showname()">
<option value="">Select customer</option>
<option value="118">John">Knight"></option><option value="119">Bill">Giles"></option><option value="122">Robert">Grain"></option> </select>
</p>
Может быть, я должен переместить код в нижней части HTML для массива JavaScript, хотя я не был уверен, что если это не будет инициализирован, когда требуется, потому что он сначала запускал HTML. Я немного не уверен, что порядок вещей правильный.
Ошибка я получаю случается, как только я изменить падение downlist и это показывает следующее:
document.customerform.post_code.value = customer['customerselect'][post_code];
}
X 'post_code' is undefined
Я думаю, что где-то я получаю мой document.value неправильно, когда показ моего массива ?
Можем ли мы увидеть образец массивов JavaScript, добавленных в HTML? Вы использовали 'View Source', чтобы проверить, что это рендеринг OK? Существуют ли ошибки JS при загрузке страницы? – halfer
Может ли инициализация 'customer' в более поздней части вашего кода перезаписывать PHP-написанную JS в начале? – halfer
Привет, halfer Я нажал F12 в проводнике, и он показывает следующее.