Javascript 在文本输入中显示未定义的JS

Javascript 在文本输入中显示未定义的JS,javascript,php,html,Javascript,Php,Html,我有一个填充选择框的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

我有一个填充选择框的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>

var json=;
函数更改值(myValue){
document.getElementById(“customerbilling_unitprice”).value=json[myValue];
}
因此,当我从下拉列表中选择一个选项时,它应该填充customer billing_unitprice文本输入,以获得数据库中retail列的值

当我从下拉列表中选择一个选项时,它在文本输入中显示undefined,而不是数据库中的值

var json = <?php echo $json_array; ?>;
var-json=;
为此:

var json = '<?php echo $json_array; ?>';
var-json='';

您正在对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; ?>');
var json=json.parse(“”);

我之所以要执行
JSON.parse()
,是因为PHP的
JSON\u encode
返回一个JSON字符串。然后需要将其解析为javascript中的对象/数组。

这将如何工作?在这里,
$json\u数组
不是一个实际的php数组吗?因此javascript变量的结果如下:
var json='Array'