访问对象的属性,而不知道这些属性的名称不起作用

时间:2017-08-14 15:39:48

标签: javascript php arrays

我有index.php:

这些php行

$sql = "SELECT * FROM voedingsmiddelen";
$result = mysqli_query($conn, $sql);

在同一页面上我有这个代码,从表中提取数据并将其放入数组中。

var array = <?php echo json_encode( mysqli_fetch_all( $result, MYSQLI_ASSOC ) ) ?>;
var arraytype = typeof array;
alert('type: '+arraytype);

var i=0;
for(key in array) {
    alert('for loop working');
    if(data.hasOwnProperty(key)) {
        var value = data[key];
        alert(value);
    } else {
        alert('has no property');
    }
}

我只收到一条提示'type:object'的警告。所以“gettype”正在发挥作用。但其他警报未显示。我做错了什么?

2 个答案:

答案 0 :(得分:0)

首先请检查数组是否为空。删除php代码并放入原始数组时:

var array = ["a", "a"];

代码似乎正在运行,至少显示第二个警报。但是,data[key]未定义。应该是array[key]

答案 1 :(得分:0)

hasOwnProperty返回一个布尔值,指示您调用它的对象是否具有名为here的属性。所以试试这个

for (var i=0; i<array.length; i++) {
    alert('for loop working');
    if(array.hasOwnProperty(i)) {
        var value = i;
        alert(value);
    } else {
        alert('has no property');
    }
}

或者在你的情况下:

var i=0;
for(key in array) {
    alert('for loop working');
    if(array.hasOwnProperty(key)) {
        var value = key;
        alert(value);
    } else {
        alert('has no property');
    }
}