Я не могу передать объект в формате JSON, но console.log() работает

#javascript #json

#javascript #json

Вопрос:

Я не могу передать объект в формате JSON, но console.log() работает. console.log() показывает, что происходит добавление объекта, но не отображается строка json?

 var results = [{
  "id": 0,
  "name": "Green",
  "category": "project",
  "year": 2008,
  "description": "my description",
  "comments": [{
    "rating": 5,
    "comment": "Perfect",
    "author": "Sandra",
    "date": "2012-10-16T17:57:28.556094Z"
  }, {
    "rating": 4,
    "comment": "Cool",
    "author": "Milena",
    "date": "2014-09-05T17:57:28.556094Z"
  }, {
    "rating": 3,
    "comment": "No bad",
    "author": "Milan",
    "date": "2015-02-13T17:57:28.556094Z"
  }, {
    "rating": 4,
    "comment": "Good job",
    "author": "Toma",
    "date": "2013-12-02T17:57:28.556094Z"
  }, {
    "rating": 2,
    "comment": "OK",
    "author": "Aleksandar",
    "date": "2011-12-02T17:57:28.556094Z"
  }]
}];

document.getElementById('show').innerHTML = results[0].comments[1].author;

document.getElementById("sendComment").onclick = function() {

  var hg = {
    "rating": 1,
    "comment": "Hello",
    "author": "X",
    "date": "2014-09"
  }
  results[0].comments.push(hg);
  console.log(results[0].comments);
} 
 <div id='show'></div>
<button id='sendComment'>Send</button> 

Комментарии:

1. Во-первых, у вас нет JSON, просто объект, во-вторых, если вы можете видеть его в консоли, он, вероятно, работает по назначению, он не будет обновлять ваши файлы и будет виден в исходном коде?

2. Работает нормально….. Итак, что же не работает. Когда вы обновляете JSON, он не обновляет ваш файл JSON. Он просто обновляет его в памяти….

3. попробуйте здесь jsfiddle.net/gojk8ve3 , после обновления, все то же самое

4. как сохранить объект в массиве?

5. потому что это не постоянное изменение. Вы не можете внести постоянные изменения с помощью клиентского JavaScript. Если вы хотите, чтобы все пользователи видели это, вам нужен код на стороне сервера. Если это только люди, использующие этот браузер, у вас есть localStorage.

Ответ №1:

результаты [0].комментарии — это массив объектов, а не строка JSON. Все работает нормально. В массив добавляется новый объект.

Комментарии:

1. Почему? Если вы нажмете кнопку в следующий раз, вы увидите, что добавляется еще один такой же объект.

2. Чтобы сохранить данные на клиенте после обновления страницы, используйте, например, JSON.stringify(результаты[0].комментарии) и localstorage