2014-10-21 3 views
0

У меня вопрос 2 части. В PHP я использую fetch_assoc, как в ответе от this post, который возвращает массив объектов. Тогда мой JS является:parse json из php-дисплея с javascript

var result = JSON.parse(response), 
    output = ""; 
for (var i = 0; i < result.length; i++){ 
    var obj = result[i]; 
    output += "<div class='mysql_row'>"; 
    for (key in obj){ 
     output += "<div class='mysql_col'>" + obj.key. + "</div>"; 
    } 
    output += "</div>"; 
} 
document.getElementById('main_grid').innerHTML = output; 

Я прочитал в другом посте, что с помощью «ключа» должен дать мне значение, но я получаю undefined, даже если вход в консоль дает мне массив строк.

  1. Я делаю что-то не так с моим для .. в?
  2. Я не слишком опытен с PHP, есть ли более элегантный способ для echo и отображения данных? Мой PHP код:

    $load = $connect->query("SELECT * FROM `user` WHERE `role` = 2"); 
    $emp_proj = array(); 
    while ($row = $load->fetch_assoc()){ 
        $emp_proj[] = $row; 
    }; 
    echo json_encode($emp_proj); 
    
+0

Вы используете 'echo json_encode ($ array);' на сервере для возврата объекта JSON? Также выполните 'console.log (response);' что он вам показывает? – Ohgodwhy

+0

добавил мой PHP-код! –

+0

Результат [{key1: value}, {key1: value}] –

ответ

1

Это не obj.key, который дает вам значение, но obj[key]:

var result = JSON.parse(response), 
    output = ""; 
for (var i = 0; i < result.length; i++){ 
    var obj = result[i]; 
    output += "<div class='mysql_row'>"; 
    for (key in obj){ 
     output += "<div class='mysql_col'>" + obj[key] + "</div>"; 
    } 
    output += "</div>"; 
} 
document.getElementById('main_grid').innerHTML = output; 

obj.key смотрит на объект obj и извлекаем свойство, ключ строка "key". obj[key] получает свойство, имя которого является значением переменной key.

var obj = { 
    key: 5, 
    username: "test" 
}; 

var key = "username"; 
console.log(obj.key); // 5 
console.log(obj[key]); // "test" 
console.log(obj.username); // "test" 
console.log(obj["username"]); // "test" 
+0

Спасибо! Это сработало отлично! –