cómo pasar una matriz asociativa de javascript en ajax a un archivo php

¿Cómo puedo pasar datos (matriz asociativa) al archivo php?

 function ajax(url,data,callback)
        {
            var xmlhttp;
            if (window.XMLHttpRequest)
            {// code for IE7+, Firefox, Chrome, Opera, Safari
            xmlhttp=new XMLHttpRequest();
            }
            else
            {// code for IE6, IE5
            xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange=function()
            {
                xmlhttp.onreadystatechange = function() {
                    if ( xmlhttp.readyState === 4 ) {
                        callback( xmlhttp.responseText );
                    }
                }
            }
            xmlhttp.open("POST",url,true);
            xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
            xmlhttp.send(data);
        }

preguntado el 03 de mayo de 12 a las 19:05

Utiliza JSON -

json_encode y json_decode son tus amigos -

Y por favor use jQuery, este código se parece a la edad de piedra... -

2 Respuestas

De la forma en que leo esto, estás en javascript y tienes un objeto javascript (javascript no tiene matrices asociativas, solo matrices y objetos). Por lo tanto, independientemente de los datos que tenga, debe convertirlos en una cadena y enviarlos a través de POST o GET a su script php. recomendaría incluir JSON3 como un polyfill para asegurarse de que tendrá JSON.stringify en su página (para navegación cruzada). El código será algo como esto:

var data = {
    someData: 'data',
    moreData: [
        'blah',
        'bleh'
    ]
};

var stringData = JSON.stringify( data );

// using jquery ajax for brevity (http://api.jquery.com/jQuery.ajax/)
$.ajax({
  type: "POST",
  url: "your-php-script.php",
  data: { data: stringData }
});

Ahora su secuencia de comandos php puede enganchar esa cadena y convertirla nuevamente en json:

<?php
    $dataString = $_POST['data'];
    $data = json_decode($dataString);

Con suerte, esto es lo que estabas buscando. ¡Salud!

contestado el 03 de mayo de 12 a las 19:05

Puedes usar PHP Funciones JSON lograr esto. Codificará/decodificará matrices en una notación que javascript pueda manejar.

contestado el 03 de mayo de 12 a las 19:05

No, pero es el único cuerdo camino. - Ignacio Vázquez-Abrams

podría usar serialize() y unserialize(), pero probablemente encontrará errores en alguna parte. JSON fue creado para hacer lo que quieras. - Romo

entonces es así var json = { 'info' : data}; - leo0110

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.