Вывод содержимого Json файла на экран

437
04 июля 2017, 22:37

Есть json файл в котором содержатся сообщения вида

$content[]

[{
    "time": "15:58:37",
    "user": "qwe",
    "message": "With []"
},
{
    "time": "15:58:38",
    "user": "qwe",
    "message": "With []"
}]

$content

{
    "time": "15:59:06",
    "user": "qwe",
    "message": "Without []"
}{
    "time": "15:59:17",
    "user": "qwe",
    "message": "Without []"
}

Нужно с этого файла загружать сообщения при переходе на страницу html. Выводиться они должны в таблицу, для каждого сообщения новая строка: время, имя, сообщение.

<table id="messages">
    <tr class="mess_hide">
        <td class="time"></td>
        <td class="name"></td>
        <td class="message"></td>
    </tr>
</table>

Пытаюсь сделать это с помощью getJSON но ничего не получается. Что я делаю не так?

$(document).ready(function() { 
  $.getJSON('data/messages.json', function(data) { 
    $('#messages').append($('.mess_hide').clone().addClass('mess_tmp').removeClass('mess_hide')); 
    $('.mess_tmp>.time').html(data.time); 
    $('.mess_tmp>.name').html(data.user); 
    $('.mess_tmp>.message').html(data.message); 
    $('.mess_tmp').removeClass('mess_tmp'); 
  }); 
});

Запись в файл

$user = $_SESSION['user'];
$message = $_POST['message'];
$time = date('H:i:s');
$file = "../data/messages.json";
$json_content = json_decode(file_get_contents($file), true);
$content = array();
 if(is_array($json_content)) {
    $content = $json_content;
 }
 $content = array("time" => $time, "user" => $user, "message"  => $message);
 file_put_contents($file, json_encode($content, JSON_PRETTY_PRINT),FILE_APPEND);
Answer 1

Самое главное, чтобы даже в случае всего одного сообщения оно было в массиве , т.е. [{ "time": "13:41:56", "user": "Max", "message": "Hello"}]

$.getJSON('data/messages.json', callback); 
// эмуляция 
callback([{ "time": "13:41:56", "user": "Max", "message": "Hello"},{ "time": "13:42:03", "user": "Mike", "message": "Hi"}]); 
 
function callback(respond) { 
  for (var i = 0; i < respond.length; i++) { 
    var data = respond[i]; 
    var rowClone = $('.mess_hide').clone().removeClass('mess_hide'); 
    $('#messages').append(rowClone); 
    $('.time', rowClone).html(data.time); 
    $('.name', rowClone).html(data.user); 
    $('.message', rowClone).html(data.message); 
  } 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
<table id="messages"> 
    <tr class="mess_hide"> 
        <td class="time"></td> 
        <td class="name"></td> 
        <td class="message"></td> 
    </tr> 
</table>

READ ALSO
Анимация, если блок в зоне видимости

Анимация, если блок в зоне видимости

не могу решить задачу воспроизведения разовой анимации при скролеНаходил пример, только когда блок полностью в зоне видимости

314
Генерация CSS кода

Генерация CSS кода

Недавно увидел сайт, у которого внутри одного файла стилей ~7000 строк CSS кодаТа вот, вопрос: весь этот код пишется вручную или чем-то сгенерирован?

364
Вытеснение с под fixed

Вытеснение с под fixed

Имеется страница, состоящая из двух основных блоков (header и

291
Как убрать отступы в textarea (Safari для iPad)?

Как убрать отступы в textarea (Safari для iPad)?

Столкнулся с такой проблемой, что у элемента textarea не получается полностью убрать отступ в Safari (iPad)Даже при margin: 0; padding: 0; border: 0; текст все равно...

320