2011-04-26 15 views
9

Estoy tratando de hacer algo bastante simple, pero parece que no puedo encontrar la solución. Quiero publicar una matriz multidimensional en una página php usando la función .ajax de jQuery, pero parece que no puedo serializar la matriz correctamente.publicar una matriz usando jquery ajax

El código es el siguiente

var dataToSend = new Array(); 
    dataToSend["page"] = location.href; 
    dataToSend["data"] = new Array(); 
    var dataindex = 0; 
    jQuery(".myclass").each(function(){ 
     dataToSend["data"][dataindex]=new Array(); 
     dataToSend["data"][dataindex]["selector"] = unique_selector(jQuery(this), ""); 
     dataToSend["data"][dataindex]["contents"] = jQuery(dataToSend["data"][dataindex]["selector"]).html(); 
    }); 
    jQuery.ajax({ 
     type: 'POST', 
     url: "/main/save.php", 
     data: JSON.stringify(dataToSend), 
     dataType: "json", 
     success: function(data){alert(data);} 
    }); 

básicamente no estoy seguro de cómo pasar correctamente la matriz dataToSend. En este momento firebug muestra la publicación como vacía a pesar de que la matriz está cargada con todo tipo de cosas buenas.

Gracias,

Daniel

Respuesta

11

Usted está definiendo new Array();, pero usted está usando como new Object(). Intenta usar objetos.

Prueba esto:

var dataToSend = { 
    page: location.href, 
    data: [] 
}; 
var dataindex = 0; 
jQuery(".myclass").each(function(){ 
    var temp = unique_selector(jQuery(this), ""); 
    dataToSend.data[dataindex++] = { 
     selector: temp, 
     contents: jQuery(temp).html() 
    }; 
}); 
jQuery.ajax({ 
    type: 'POST', 
    url: "/main/save.php", 
    data: JSON.stringify(dataToSend), 
    dataType: "json", 
    success: function(data){ alert(data); } 
}); 
+0

Supongo que no hay un equivalente de JSON.stringify para matrices? De todos modos, eso funcionó ahora para resolver el lado php. Muchas gracias. – Daniel

+0

@mkeats. Sin preocupaciones. @Daniel. Array's son listas indexadas enteras. Los objetos son listas indexadas clave. JSON necesita tener variables de JavaScript perfectas o no se convertirá. – jerone

+0

@Daniel, JSON.stringify ([{name: 'Dude'}, {name: 'Guy', phone: 234556}]) produce "[{" name ":" Dude "}, {" name ":" Guy "," teléfono ": 234556}]" –

0

Tomado de las páginas PHP Ayuda:

que tenga matriz multidimensional en entradas de formulario

HTML Ejemplo:

<input name="data[User][firstname]" type="text" /> 
<input name="data[User][lastname]" type="text" /> 
... 

dentro de php secuencia de comandos después del envío y ou puede acceder al elemento individual de este modo:

$firstname = $_POST['data']['User']['firstname']; 
... 
+0

Sí vi esta opción, pero no estoy publicar los contenidos de un formulario. Es una matriz de javascript que ensamblé. Necesito una forma de convertir esa matriz en una cadena json. – Daniel

+0

¿Desea convertir una matriz de JavaScript en una cadena Json? – slandau

0

Uso

data: { '': dataToSend } 

He utilizado este en un escenario similar y funcionó como el encanto ...

Cuestiones relacionadas