Melhor maneira de transferir uma matriz entre PHP e Javascript

Então eu tenho uma série de registros recuperados de um database. A matriz está no formato;

$rows[0]['id']=1; $rows[0]['title']='Abc'; $rows[0]['time_left']=200; $rows[1]['id']=2; $rows[1]['title']='XYZ'; $rows[1]['time_left']=300; //And so on upto 10-20 rows 

Qual é a melhor maneira de transferir esta matriz para o meu código javascript? Gostaria que o javascript pudesse percorrer todos os registros e usar o atributo ‘id’, atualizar a div com esse id com algumas informações.

Meu código javascript está em um arquivo .js externo, mas eu sou capaz de executar o código php no código HTML da minha página. Então eu poderia fazer algo como isto:

Em my_file.js:

 var rows=New Array(); 

Em código HTML:

       rows[]['title']=""; //And so on   

Eu costumo usar um object JSON para isso:

  • Do lado do servidor, o JSON codifica seus dados: json_encode($data);
  • No lado do JavaScript, escrevo uma function que leva um object JSON como parâmetro e descompactá-lo.

Quando você desembalar o object, você pode imprimir o conteúdo da matriz em uma tag

, ou sempre que você quiser na página (jQuery faz um trabalho muito fofo disso).

Se você está fazendo dados em linha, eu sempre gostei de fazer

  

Para coisas básicas, salva você fazendo um retorno de chamada AJAX. Além disso, se você quiser colar dados em um nó DOM, o modo “metaobject” é algo que eu realmente amo.

 

Agora isso pode não parecer ótimo, mas é uma maneira efetiva de associar dados diretamente a um nó DOM sem precisar conhecer o caminho exato e único desse nó. Muito útil se você tiver muitos conjuntos de dados que precisam ser anexados a elementos de canvas específicos.

Eu costumo usar http://noteslog.com/metaobjects/ plugin para jQuery, mas é tão simples que, na ocasião, escrevi isso sozinho (houve um tempo em que não consegui encontrar o plugin, mas novo como funcionou)

Quando terminar, haverá

$ (“div # foobar> div”). get (). data. ($ yourarrayhere)

Visível em seu código.

Para acompanhar a sua pergunta (e minha resposta, fiquei sem espaço na resposta do comentário), aqui está um subconjunto muito simplificado do código que uso:

Javascript AJAX manipulador no jQuery:

 $.ajax({ type: "POST", url: "BACKEND.php", timeout: 8000, data: "var1=" + myVar, dataType: "json", error: function(){ $("#DIVID").html("
Error!
"); }, success: function(jsonObj){ $("#DIVID").html(jsonObj.mydata); } }); PHP Array: $data['mydata'] = $myData;

Em um exemplo AJAX, como aqui, você pode resolver esse problema desta maneira:

arquivo .php (function de retorno ajax)

 $myArray = array("object_id"=>1, "object_title"=>"Testobject"); return json_encode($myArray); 

arquivo .js (function javascript)

 ... if(g_httpRequest.readyState == 4) { var jsonRes = JSON.parse(g_httpRequest.responseText); alert(jsonRes.object_title) } ... 

Eu ainda sou bastante novo também dizer talvez este método não seja o mais seguro, mas você sempre pode transformar sua matriz de javascript em uma string e, em seguida, passá-la através do URL para o php para GET.

assim:

 for(var i=0;i < jsarray.length;i++) { var x = jsarray[i]; urlstring += "myvalue[]="+x+"&"; } document.location.href = "mypage.php?"+urlstring; 

e então o php seria:

 $phparray = $_GET['myvalue']; 

espero que ajude