我有这个填充选择框的 HTML/PHP 代码
<select name="customerbilling_productname" id="mySelectBox" onchange="changeValue(this.value);" style="width:120px;">
<option value="">Please Choose</option>
<option value="Type Custom">Type Custom</option>
<?php
$json_array = array();
$stmt = $pdo_conn->prepare("SELECT * from prices ");
$stmt->execute(array());
$records = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach($records as $result2) {
$product = $result2["product"];
$json_array[$product] = $result2['retail'];
echo '<option value="'.$result2["product"].'">'.$result2["product"].'</option>';
}
json_encode($json_array, JSON_FORCE_OBJECT);
?>
</select>
这个 JS 代码:
<script>
var json = <?php echo $json_array; ?>;
function changeValue(myValue) {
document.getElementById("customerbilling_unitprice").value = json[myValue];
}
</script>
因此,当我从下拉列表中选择一个选项时,它应该填充客户 billing_unitprice 文本输入,以获取数据库中零售列的值
当我从下拉列表中选择一个选项时,它在文本输入中显示未定义,而不是数据库中的值
最佳答案
您正在像这样编码 json:
json_encode($json_array, JSON_FORCE_OBJECT);
但您没有将其分配给任何东西。
所以,这样做:
$json_str = json_encode($json_array, JSON_FORCE_OBJECT);
然后像这样更新你的 JavaScript:
var json = JSON.parse('<?php echo $json_str; ?>');
我之所以这样做 JSON.parse()
是因为 PHP 的 json_encode
返回一个 json 字符串。然后,您需要将其解析为 JavaScript 中的对象/数组。
关于javascript - JS 在文本输入中显示未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23369726/