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

use*_*436 1 javascript php

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

我的代码工作正常,但我有一个问题,使用返回输出作为JS的数组.

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

    echo $js_array = json_encode($Unit_tenants);
    // output is ["1","2","3"]
Run Code Online (Sandbox Code Playgroud)

现在我想使用JS输出的这个值的返回值将这些值填充到值为1,2,3的下拉列表中

我的JS代码

<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>
Run Code Online (Sandbox Code Playgroud)

问题在于var options = data因为它被识别为字符串而不是具有多个值的数组.任何想法如何解决这个问题?

jdu*_*423 6

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

请尝试以下方法:

在PHP中:

return json_encode($data);
Run Code Online (Sandbox Code Playgroud)

在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>";
 }
Run Code Online (Sandbox Code Playgroud)