2012-01-25 3 views
0

Я пытаюсь использовать визуализацию Google (впервые - так, пожалуйста, несите меня), чтобы построить простую диаграмму столбцов. Дела обстоят немного сложнее из-за того, что я должен работать в рамках существующей структуры MVC, включая Smarty, но это все-таки.Визуализация Google - ChartWrapper - таблица не имеет столбцов

В php я получаю правильный набор данных, которые я передаю smarty. то Smarty форматирует данные для визуализации Google, так что я получаю это (копировать-вставить из браузера «для просмотра исходного кода»):

<script type="text/javascript" src="https://www.google.com/jsapi"></script> 
<script type="text/javascript"> 
    google.load('visualization', '1'); 
    google.setOnLoadCallback(drawVisualisation); 

    function drawVisualisation() { 
     var wrapper = new google.visualization.ChartWrapper({ 
      chartType: 'ColumnChart', 
      dataTable: [['', 'android', 'iphone', 'unknown'],['2012-01-24', 2, 1, 2],['2012-01-25', 1, 1, 1]], 
      options: {'title': 'Periods'}, 
      containerId: 'access-chart' 
     }); 
     wrapper.draw(); 
    }; 
</script> 

Однако при выполнении, это приводит к «Таблица не имеет никаких данных».

Что действительно странно в том, что если я скопирую этот сгенерированный код и вставляю его непосредственно в шаблон (без форматирования его из переданных данных), диаграмма будет показана правильно.

Что может быть проблемой здесь и как ее исправить?

+0

Это должно работать. Если при запуске консоли открывается, вы видите какие-либо другие ошибки js, которые могут привести к тому, что это не будет вызвано? Является ли «диаграмма доступа» определенным идентификатором элемента на вашей странице, которая существует перед обратным вызовом drawVisualization? Можете ли вы вставить весь источник страницы? – oli

+0

Других ошибок нет - просто «Таблица не имеет данных». Элемент «accesss-chart» существует, я получаю текст «белый-на-красном» «Таблица не содержит данных» внутри него. Вся страница слишком велика (более 500 строк кода html/js) - диаграмма - лишь малая ее часть. –

+0

Если вы скопируете весь источник на новую страницу html и запустите это, рисуется ли диаграмма? Если это не так, то в этой статье есть что-то еще. Если это так, то во время процесса рендеринга происходит что-то. – oli

ответ

0

По-видимому, меня охватила одна из самых глупых ошибок. Проблема была вызвана некоторым очень нежелательным кэшированием. Естественно, я не получил код правильно с первой попытки, и мне потребовалось несколько изменений, пока все JS/HTML не были правы. Тем не менее, очевидно, что код javascript был кэширован браузером, и когда страница HTML (php-generated) была перезагружена, javascript не был - в результате был неполным javascript и, следовательно, нет диаграммы. После того, как кэширование было разрешено, график не отображается, как ожидалось.

Смежные вопросы