50 votos

Pasando un Array de JavaScript a PHP a través de JQuery $.ajax

Quiero manipular un Array de javascript en PHP. ¿Es posible hacer algo así?

$.ajax({        
       type: "POST",
       url: "tourFinderFunctions.php",
       data: "activitiesArray="+activities,
       success: function() {
            $("#lengthQuestion").fadeOut('slow');        
       }
    }); 

Las actividades son un Array unidimensional como:

var activities = ['Location Zero', 'Location One', 'Location Two'];

El script no se completa cuando intento esto.. ¿Alguna idea o material de lectura que me ayude a lograr esto?

94voto

Valentin Golev Puntos 5002
   data: { activitiesArray : activities },

eso es todo! ahora puedes acceder a él en PHP:

   <? $myArray = $_REQUEST['activitiesArray']; ?>

10voto

jvenema Puntos 21499

Querrás codificar tu Array como JSON antes de enviarlo, o sólo obtendrás algo de basura en el otro extremo.

Como todo lo que envías es el Array, puedes hacerlo sin más:

data: { activities: activities }

que convertirá automáticamente el Array por ti.

Ver aquí para más detalles.

8voto

James Wiseman Puntos 18347

Tienes que convertir esto en una cadena. Puedes hacerlo utilizando el método stringify de la biblioteca JSON2.

http://www.json.org/

http://www.json.org/JS.html

El código sería algo así:

var myJSONText = JSON.stringify(myObject);

Así que

['Location Zero', 'Location One', 'Location Two'];

Se convertirá:

"['Location Zero', 'Location One', 'Location Two']"

Tendrás que consultar a un gurú de PHP sobre cómo manejar esto en el servidor. Creo que otras respuestas aquí íntima una solución.

Los datos pueden ser devueltos desde el servidor de forma similar. Es decir, se pueden volver a convertir en un objeto.

var myObject = JSON.parse(myJSONString);

6voto

lu1s Puntos 551

Sé que puede ser demasiado tarde para responder a esto, pero a mí me funcionó de maravilla:

  1. Stringifique su objeto javascript (json) con var st = JSON.stringify(your_object);

  2. Pase sus datos POST como "cadena" (tal vez usando jQuery: $.post('foo.php',{data:st},function(data){... });

  3. Decodifique sus datos en el procesamiento del lado del servidor: $data = json_decode($_POST['data']);

Eso es todo... puedes usar libremente tus datos.

Las matrices multidimensionales y las matrices simples se manejan como matrices normales. Para acceder a ellos sólo hay que hacer lo normal $foo[4] .

Las matrices asociativas (objetos javsacript) se manejan como objetos PHP (clases). Para acceder a ellos sólo hay que hacerlo como las clases: $foo->bar .

1voto

Gazzer Puntos 1358

Utilice la función JQuery Serialize

http://docs.jquery.com/Ajax/serialize

Serialize se utiliza normalmente para preparar datos de entrada del usuario para ser enviados a un servidor. Los datos serializados están en un formato estándar que es compatible con casi todos los lenguajes de lenguajes de programación del lado del servidor y marcos.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X