Распечатать JSON из переменной в Javascript - PullRequest
0 голосов
/ 10 декабря 2010

Я пытаюсь напечатать JSON, который я получаю так:

jsonfields = $.ajax({
url: "ajax.php?getsensors="+raw.deviceId, 
async: false
}).responseText;

в хранилище данных ExtJS, которое выглядит так:

Ext.grid.dummyData = [
    //jsonfields,
    //["ping"],["location"],["death"],["birth"],["DeviceInfo"],
    ['3m Co',71.72,0.02,0.03,'4/2 12:00am', 'Manufacturing'],
    ['Alcoa Inc',29.01,0.42,1.47,'4/1 12:00am', 'Manufacturing'], ...

Поэтому, когда я предупреждаю переменную 'jsonfields 'it alert

["ping"],["location"],["death"],["birth"],["DeviceInfo"]

Но он вообще не рендерится в сетку, но когда я жестко кодирую строку выше в json, он рендерится.Я установил свой jsonfields var как:

var jsonfields; 

Это первое, что я делаю в теге script.Я знаю, что значение этого обновляется из-за предупреждения.Так чем же он отличается от отображения JSON из предварительно заданной переменной по сравнению с тем, когда я его жестко запрограммировал?

Спасибо!

ОБНОВЛЕНИЯ: я также вижу ответ ajaxзапрос в инструментах разработчика Chrome XHR, похоже, имеет такую ​​же структуру: ["ping"], ["location"], ["death"], ["birth"], ["DeviceInfo"]

alert(typeof jsonfields);

Возвращает "строку"

1 Ответ

1 голос
/ 10 декабря 2010

Было бы лучше исправить сервер, чтобы он выдавал действительный JSON, а затем использовать Ext.data.JsonStore

Если вы не можете исправить сервер, вот очень ручное решение:

jsonfields = Ext.decode('[' + $.ajax({
    url: "ajax.php?getsensors="+raw.deviceId, 
    async: false
}).responseText + ']');

Ext.grid.dummyData = jsonfields.concat([
    ['3m Co',71.72,0.02,0.03,'4/2 12:00am', 'Manufacturing'],
    ['Alcoa Inc',29.01,0.42,1.47,'4/1 12:00am', 'Manufacturing'], ...
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...