variable por pasar insertar funciones datos como php javascript ajax arrays dom

por - La mejor forma de transferir una matriz entre PHP y Javascript



pasar variable de javascript a php por ajax (5)

Todavía soy bastante nuevo, también digo que tal vez este método no sea el más seguro, pero siempre puedes convertir tu matriz de JavaScript en una cadena y luego pasarla a través de la URL para que el php se GET.

asi que:

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

y luego el php sería:

$phparray = $_GET[''myvalue''];

Espero que ayude

Esta pregunta ya tiene una respuesta aquí:

Así que tengo una serie de registros recuperados de una base de datos. La matriz está en el 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

¿Cuál es la mejor manera de transferir esta matriz a mi código de JavaScript? Me gustaría que el javascript pueda recorrer todos los registros y, usando el atributo ''id'', actualice el div con ese id con algo de información.

Mi código javascript está en un archivo .js externo, pero puedo ejecutar el código php en el código HTML de mi página. Entonces podría hacer algo como esto:

En my_file.js:

var rows=New Array();

En código HTML:

<html> <head> <script type="text/javascript" src="js/my_file.js"></script> <script type="text/javascript"> <? foreach ($rows as $row):?> <? extract($row);?> rows[<?=$id;?>][''title'']="<?=$title;?>"; //And so on <? endforeach;?> </script>


En un ejemplo de AJAX como aquí puede resolver este problema de esta manera:

archivo .php (función de retorno ajax)

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

Archivo .js (función de JavaScript)

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


Tiendo a usar un objeto JSON para esto:

  • En el lado del servidor, JSON codifica sus datos: json_encode($data);
  • En el lado de JavaScript, escribo una función que toma un objeto JSON como parámetro y lo descomprime.

Cuando desempaquete el objeto, puede imprimir los contenidos de la matriz en una etiqueta <DIV> , o donde quiera que desee en la página (jQuery hace un trabajo bastante dulce de esto).


Para dar seguimiento a su pregunta (y mi respuesta, me quedé sin espacio en la respuesta del comentario), aquí hay un subconjunto muy simplificado del código que uso:

Controlador JavaScript AJAX en jQuery:

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


Si está haciendo datos en línea, siempre he sido aficionado a hacer

<script type="text/javascript"> window.sitescriptdata = {}; window.sitescriptdata.foo = ( <?php echo json_encode( $structure ); ?> ); </script>

Para cosas básicas, te ahorra hacer una devolución de llamada AJAX. Además, si quieres pegar datos en un nodo DOM, el modo "metaobjeto" es algo que realmente amo.

<div id="foobar"> <div><object class="metaobject"> <param name="data" value="<?php echo htmlentities(json_encode($data), ENT_QUOTES );?>" /> </object></div> </div>

Ahora bien, esto puede no parecer excelente, pero es una forma efectiva de asociar datos directamente con un nodo DOM sin necesidad de conocer la ruta única exacta a ese nodo. Muy útil si tiene muchos conjuntos de datos que deben adjuntarse a elementos de pantalla específicos.

Usualmente utilizo http://noteslog.com/metaobjects/ plugin para jQuery, pero es tan simple que en ocasiones lo escribí yo mismo (hubo un momento en que no pude encontrar el complemento, pero nuevo cómo funcionó)

Cuando termine, habrá

$ ("div # foobar> div"). get (). data. ($ yourarrayhere)

Visible a tu código