Pregunta Pasar matriz de JavaScript a PHP a través de jQuery $ .ajax


Quiero manipular una matriz de JavaScript en PHP. ¿Es posible hacer algo como esto?

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

Actividades es una matriz dimensional única como:

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

La secuencia de comandos no se completa cuando intento esto ... ¿Cómo puedo solucionarlo?


73
2018-01-06 14:56


origen


Respuestas:


data: { activitiesArray: activities },

¡Eso es! Ahora puedes acceder a él en PHP:

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

138
2018-01-06 15:02



Querrá codificar su matriz como JSON antes de enviarla, o simplemente obtendrá algo de basura en el otro extremo.

Como todo lo que está enviando es la matriz, puede hacer lo siguiente:

data: { activities: activities }

que convertirá automáticamente la matriz por ti.

Ver aquí para detalles.


10
2018-01-06 15:02



Debes convertir esto en una cadena. Puede hacerlo utilizando el método stringify en la biblioteca JSON2.

http://www.json.org/

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

El código sería algo así como:

var myJSONText = JSON.stringify(myObject);

Asi que

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

Se convertirá:

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

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

Los datos pueden devolverse desde el servidor de una manera similar. Es decir. puedes volver a convertirlo en un objeto.

var myObject = JSON.parse(myJSONString);

9
2018-01-06 15:00



Sé que puede ser demasiado tarde para responder a esto, pero esto funcionó para mí de una manera excelente:

  1. Stringify 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 simplemente haz lo normal $foo[4].

Las matrices asociativas (objetos javsacript) se manejan como objetos php (clases). Para acceder a ellos solo hazlo como clases: $foo->bar.


8
2018-04-07 04:25



Use la función JQuery Serialize

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

Serialize se usa generalmente para preparar   datos de entrada del usuario que se publicarán en un   servidor. Los datos serializados están en una   formato estándar que es compatible   con casi todo el lado del servidor   lenguajes de programación y marcos


1
2018-01-06 15:03



Debería ser así:

$.post(submitAddress, { 'yourArrayName' : javaScriptArrayToSubmitToServer },
  function(response, status, xhr) {
    alert("POST returned: \n" + response + "\n\n");
  })

0
2017-11-19 08:22



Esto funcionó para mí:

$.ajax({
    url:"../messaging/delete.php",
    type:"POST",
    data:{messages:selected},
    success:function(data){
     if(data === "done"){

     }
     info($("#notification"), data);
    },
    beforeSend:function(){
         info($("#notification"),"Deleting "+count+" messages");
    },
    error:function(jqXHR, textStatus, errorMessage){
        error($("#notification"),errorMessage);
    }
});

Y esto para tu PHP:

$messages = $_POST['messages']
foreach($messages as $msg){
    echo $msg;
}

0
2018-06-20 17:18



Use la funcionalidad incorporada de PHP para agregar el operando de matriz al nombre de variable deseado.

Si agregamos valores a una matriz Javascript de la siguiente manera:

acitivies.push('Location Zero');
acitivies.push('Location One');
acitivies.push('Location Two');

Se puede enviar al servidor de la siguiente manera:

$.ajax({        
       type: 'POST',
       url: 'tourFinderFunctions.php',
       'activities[]': activities
       success: function() {
            $('#lengthQuestion').fadeOut('slow');        
       }
});

Observe las citas de las actividades []. Los valores estarán disponibles de la siguiente manera:

$_POST['activities'][0] == 'Location Zero';
$_POST['activities'][1] == 'Location One';
$_POST['activities'][2] == 'Location Two';

0
2018-03-26 20:32