Escreva para a matriz de javascript no php loop

Eu tenho um loop php que está ecoando os valores de geolocalização. Como posso obter isso para escrever esses valores em uma matriz de javascript, então eu posso usá-los para traçar pontos em uma canvas HTML5?

O loop php é o seguinte

  • geo != false) { echo " | From ("; echo $phrase->geo->coordinates[0]; echo ","; echo $phrase->geo->coordinates[1]; echo ")"; } else { echo " | No Location Data"; } ?>

Você tentou

 var myJavascriptData = < ?= json_encode($php_data) ?>; 

Você pode querer aproveitar a biblioteca JSON para PHP.

A maneira mais limpa de passar dados para o programa de JavaScript de um navegador é colocá-lo em uma tabela html “escondida”.

O html deve ser parecido com

 echo "\n" ; get_rows(); while ($cf = next_row()) { echo "\n "; echo "\n"; echo "\n"; echo "\n"; echo " "; } echo "\n"; 

Esta tabela é facilmente acessível a partir do seu javascript: –

 var dtab = document.getElementById("DATATAB"); var rows = dtab.getElementsByTagName("tr"); for (var r = 0; r < rows.length ; r++) { row = rows[r]; item_key = row.cells[0].innerHTML; item_col1 = row.cells[1].innerHTML; item_col2 = row.cells[2].innerHTML; // do your thing here ...... } 

Alternativamente, você poderia olhar para usar as bibliotecas AJAX como protótipo ou dojo que possuem todos os componentes javascript para acessar dados de um serviço de tipo "REST".

Você então precisa escrever um serviço separado que obtém o XML ou o JSON necessários para sua página.

Minha sugestão é despejar um bloco de script para a saída e configurá-los em uma variável lá.

A definição da matriz terá de estar realmente no código javascript que obtém saída para a página.

Por exemplo, você precisará de uma saída de algo como:

  

Existem maneiras mais eficientes de criar esta matriz de forma estática, mas este é apenas um exemplo.

Uma maneira mais eficiente (em termos de código) seria criar uma seqüência de caracteres que definisse a matriz literal, depois descartar uma definição de javascript. O resultado seria algo como:

  

então, no seu loop dentro do php, você criaria uma string que, em última instância, conteria var coords = [[123.45,987.65],[234.56,876.54]] . Fora do seu loop, você o envolve nos blocos de script e o exibe na página.