javascript - JS 在文本输入中显示未定义

标签 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</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/

相关文章:

javascript - 使用对象文字的 JQuery 不能在 onclick 上使用 $(this) always undefine

jquery - 将 Bootstrap Mobile 菜单更改为悬停而不是单击

javascript - 如何计算当前连续天数(从当前日期开始的连续天数)?

javascript - 类型错误 : Cannot read property 'then' of undefined in react js

php - wp_title 过滤器对 &lt;title&gt; 标签没有影响

php - foreach 更新查询从数组中设置相同的最后一个值

javascript - 从所选菜单中选择 ID 后,在文本框中显示价格

html - Bootstrap popover 隐藏换行符

javascript - 使用正则表达式检查 dd-mmm-yyyy 中的 jQuery 数据格式

php - 根据请求 PHP 更改下拉菜单的焦点