Задать вопрос
@ZaxapKramer
Больной верстальщик

Как получить значение из предложенного JSONP с помощью чистого JavaScript?

Здравствуйте. Относительно давно занимался такими вещами - извлечением данных из jsonp. И на данный момент приспичило взять javascript (без jquery и прочего).

Вот, собственно, наш герой - JSONP собственной персоной:
response({
	"files": [
		{
			"type": "js",
			"name": "script"
		},
		{
			"type": "html",
			"name": "file"
		}
	]
});


А вот, собственно, так я попытался получить type:
// ...
function ajax(url, callback, parse) {
	var xhr = new XMLHttpRequest();
	xhr.open('GET', url);
	xhr.onload = function(){
		if (this.readyState == 4) {
			if (xhr.status >= 200 && xhr.status < 400) {
				callback(parse ? JSON.parse(xhr.responseText) : xhr.responseText);
			}
		}
	};
	xhr.send(null);
}

ajax(jsonp_url, function(data) {
	data.files.forEach(function(item, i){
		alert(data.item.type);
	});
});
// ...


До этого были еще попытки, но остановился на forEach... но этот forEach все равно не хочет работать. Основная проблема заключается именно в извлечении type, а не в forEach.

P.S. Jquery просьба не предлагать.
  • Вопрос задан
  • 285 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@ZaxapKramer Автор вопроса
Больной верстальщик
Проблему решил.
Избавился от callback - получил просто JSON (без "P").
Далее применил JSON.parse() на этот самый JSON (в моей функции ajax последним параметром указал true), получил значение через описанный в вопросе forEach. Удачи:)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Rou1997
@Rou1997
Это не JSON, а JSONP. JSON выглядит так:
{
  "files": [
    {
      "type": "js",
      "name": "script"
    },
    {
      "type": "html",
      "name": "file"
    }
  ]
}
Ответ написан
Ваш ответ на вопрос

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

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