Неверный формат данных JSON - PullRequest
3 голосов
/ 01 марта 2012

Я пытаюсь создать JSON для отображения диаграммы с использованием Highcharts

http://www.highcharts.com/

Я скопировал один из их примеров:

http://www.highcharts.com/stock/demo/basic-line

Нажмите «Параметры просмотра» под графиком, чтобы увидеть источник.Там также есть JSFiddle для игры с

Если я копирую это локально, все работает нормально.

Проблема в том, что я пытаюсь использовать свой собственный источник данных.

У меня есть ASP.Net MVC контроллер, который выплевывает список массивов, так же, как их источник данных.Тем не менее, это не работает.

Их источник данных выглядит следующим образом http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?

, и они получают его вот так

$.getJSON('http://www.highcharts.com/samples/data/jsonp.php?filename=aapl-c.json&callback=?', function (data) {

Так что я подумал, чтоЯ сделал бы шаг назад и точно скопировал свои данные и поместил их в текстовый файл на моем сервере и попытался это сделать:

Итак, я попробовал это

$.getJSON('/data.txt', function (data) {

и это

$.get('/data.txt', function (data) {

, но ни одна из них не работает

Я также пытался использовать и 1036 *, и jQuery.parseJSON после извлечения данных, но опять же - похоже, это не работает

ЯТакже интересно, что?находится в начале их данных

Их данные выглядят так

?([[<some data>],[some data]]);

Я не получаю сообщений об ошибках, график просто не отображает

любойидеи?

РЕШЕНО ЭТО

Просто нужно извлечь данные, превратить их в массив и передать на диаграмму.

Требуется бытьмассив, а не JSON

Ответы [ 2 ]

3 голосов
/ 01 марта 2012

Этот источник данных выводит JSONP, который предназначен для междоменных запросов AJAX.Это недопустимый «сырой» JSON из-за этой дополнительной оболочки callback(...).

Прочтите об этом здесь: http://api.jquery.com/jQuery.ajax/ в разделе dataType.

2 голосов
/ 01 марта 2012

Как вы говорите в своих тегах, это не JSON, это JSONP.Не разбирай, лови с обратным вызовом.Для этого используйте jQuery.getScript и определите function callback(data).Внутри этой функции data должен содержать (проанализированный) объект.Также замените ? в URL-адресе на callback (или как бы вы ни назвали свою функцию) - ? не является допустимым идентификатором в JavaScript, поэтому ?([....]) - это нонсенс.

...