Не удается получить доступ к полной строке JSON в руле, используя jQuery - PullRequest
0 голосов
/ 17 апреля 2020

Я занимаюсь программированием на стороне клиента в ExpressJS, используя рули. Я должен получить JSON от моего маршрутизатора (mongoDB) до jQuery переменных. Но я не могу получить это. JSON показывает ошибку после переноса строки. Но я могу получить от AJAX. Здесь код и ошибка.

Код

var locationData = '{{location}}';

var lctdata = jQuery.parseJSON(locationData);

$.each(lctdata, function (lctkey, lctvalue) {
    alert(lctvalue.name);
});

Ошибка:

Uncaught SyntaxError: Invalid or unexpected token

                        var locationData = '{ _id: 5e967a286c55800d3c301308,
  name: 'Store',
  level: '0',
  haschild: '1',
  description: 'All Stores',
  created_date: '2020-04-15:08:36:16',
  __v: 0 },{ _id: 5e967a5a6c55800d3c301309,
  name: 'RS Puram Branch',
  parent: 'Store',
  level: '1',
  haschild: '0',
  description:
   'Store is located in RS PURAM. One of the highly powerful store in the city',
  created_date: '2020-04-15:08:37:06',
  __v: 0 }';

                    var lctdata = jQuery.parseJSON(locationData);
                    $.each(lctdata, function (lctkey, lctvalue) {
                        alert(lctvalue.name);
                    });

Ошибка отображается в самой первой строке как неожиданная.

1 Ответ

0 голосов
/ 17 апреля 2020

Вы можете использовать {{{location}}}, чтобы удерживать руль от HTML, выходящий из JSON. Обратите внимание на три скобки вместо двух. См. https://handlebarsjs.com/guide/#html -экранирование

Вам также не нужно заключать свой (недействительный) JSON в кавычки. Так как он недействителен JSON, JSON.parse не будет правильно его анализировать, но синтаксический анализатор JS будет правильно его анализировать, поскольку он является действительным инициализатором объекта в JavaScript.

Когда вы заключаете вашу JSON -подобную строку в кавычки, они конфликтуют с одинарными кавычками внутри вашей JSON -подобной строки. Например, var c = '{a: 'hello'}'

// Additional tip: no jQuery required.
var locationData = {{{location}};
for (let [key, value] of Object.entries(locationData)) {
  console.log(`${key}: ${value}`);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...