Задать вопрос
@NsWeFront

Почему перед объектом json в js я должен ставить '', а иначе не работает?

Почему у меня с такими данными не отображается на html странице ничего. он выдает исключение и текст ошибки.
Есть код:

let feed = document.getElementById('feed');
let respone = {"deals":[{"title" : "Краски", "description" : "123", "price" : "30", "link" : "http://www.example.com/farrow-and-ball/"},{"title" : "Хоккей", "description" : "32", "price" : "15", "link" : "http://www.example.com/farrow-and-ball/"},{"title" : "Футбол", "description" : "lorem", "price" : "5", "link" : "http://www.example.com/farrow-and-ball/"}]};
if(respone){
	try{
		let dealData = JSON.parse(respone);
		showContent(dealData);
		console.log(dealData);
	}
	catch(e){
		console.log("Не работает птичка" + e);
		feed.innerHTML = "не удалось загрузить предложение, админ пьет кофе";
	}
	finally{
		console.log("123");
	}
}	
function showContent(dealData){
	let newContent = '';
	for(let i in dealData.deals){
		newContent += '<div class="deal">';
		newContent += '<h2>' + dealData.deals[i].title + '</h2>';
		newContent += '<p>' + dealData.deals[i].description + '</p>';
    newContent += '<a href="' + dealData.deals[i].link + '">';
    newContent += ' ' + dealData.deals[i].link;
    newContent += '</a>';
    newContent += '</div>';
	}
	feed.innerHTML = newContent;
}

А если я поставлю перед {"deals" одинарную кавычку, то он мне отображает все данные в объекте json. С чем это связано?

let respone = '{"deals":[{"title" : "Краски", "description" : "123", "price" : "30", "link" : "http://www.example.com/farrow-and-ball/"},{"title" : "Хоккей", "description" : "32", "price" : "15", "link" : "http://www.example.com/farrow-and-ball/"},{"title" : "Футбол", "description" : "lorem", "price" : "5", "link" : "http://www.example.com/farrow-and-ball/"}]}';

То все заработает прекрасно.
  • Вопрос задан
  • 335 просмотров
Подписаться 3 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 2
@Gamelot
Программист php
Это связано с тем, что let respone = '{"deals"}' - присваивает строку,
let respone = {"deals":[]} - присваивает объект JS в виде json-массива.
Ответ написан
Комментировать
aryeh
@aryeh
Молод (душой) и приятен в общении :-)
потому что JSON.parse в качестве параметра принимает строку, а возвращает объект json.
читайте хелпы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы