使用PHP数组和JS将值填充到下拉列表中

时间:2018-08-28 17:44:54

标签: javascript php

我正在使用PHP和JS从SQL表获取数据,然后将结果填充到下拉列表中。

我的代码运行正常,但是使用return输出作为JS数组时遇到问题。

在我的PHP代码部分中,我将输出格式化为JSON编码'

DateTimeStyles

现在,我想将此输出的返回值与JS一起使用,以将这些值填充到具有值1,2,3的下拉列表中

我的JS代码

    echo $js_array = json_encode($Unit_tenants);
    // output is ["1","2","3"]

问题出在 <script> $(document).ready(function(){ $('#ddlUnitNo').change(function(){ //Selected value var inputValue = $(this).val(); //Ajax for calling php function $.post('list.php', { dropdownValue: inputValue }, function(data){ //do after submission operation in DOM var select = document.getElementById("selectNumber"); var options = data; // Optional: Clear all existing options first: select.innerHTML = ""; // Populate list with options: for(var i = 0; i < options.length; i++) { var opt = options[i]; select.innerHTML += "<option value=\"" + opt + "\">" + opt + "</option>"; } }); }); }); </script> 中,因为它被识别为字符串,而不是具有多个值的数组。知道如何解决这个问题吗?

2 个答案:

答案 0 :(得分:6)

JavaScript不会接受php数组作为数组。您需要将其转换为数组,在本例中为JSON对象。

尝试以下操作:

在php中:

return json_encode($data);

在javascript中:

var options = JSON.parse(data);
// Populate list with options:
for(var i = 0; i < options.length; i++) {
    var opt = options[i];
    select.innerHTML += "<option value=\"" + opt + "\">" + opt + "</option>";
 }

答案 1 :(得分:0)

尝试这种方式,PHP方式

   <?php  $js_array = ["1","2","3"]; ?>

    <select name="someName" onChange="">
    <option value="" selected>Select One</option>

   <?php    for($k=0, $< count($js_array); $k++){ ?>

    <option value="<?php echo($js_array[$k] ?>"><?php echo($js_array[$k] ?></option>

    <?php } ?>

    </select>