parse objects array jquery ajax json object brackets

jquery - objects - json object javascript



problema con los corchetes en los datos de jQuery Form cuando se envían datos como json (4)

Es posible enviar varios datos con el mismo nombre de clave a un script. Puede hacer esto agregando corchetes [] al final del nombre de la clave para designar que los datos deben interpretarse como una matriz.

La función que hace esto es jQuery.param . Como ejemplo de cómo funciona esto:

$.param({ data: [''value3'', ''value4''] });

data son una matriz. Cuando se serializa, se representa como data%5B%5D=value3&data%5B%5D=value4 . El script del servidor lo convertirá en una matriz.

Tengo el objeto

var dataformdata={"key1":"value1","key2":"value2"};

Luego agrego algunos valores más con la misma clave (key3) como esta

dataformdata.key3 = []; dataformdata.key3.push("value3"); dataformdata.key3.push("value4");

Hago lo anterior en cada pendiente. Todo funciona, excepto cuando se envía el objeto dataformdata a través de la función jQuery ajax en la consola del navegador, veo que hay llaves en la clave ...

$.ajax({ type: "POST", url: "/", data: dataformdata, ...

Esto es lo que veo en la consola del navegador:

key1:value1 key2:value2 key3%5B%5D:value3 key3%5B%5D:value4

Debería funcionar porque en los documentos jQuery.ajax () dice

El objeto debe ser pares clave / valor. Si el valor es una matriz, jQuery serializa múltiples valores con la misma clave en función del valor de la configuración tradicional

Pero, ¿por qué los corchetes (% 5B% 5D) están en la clave?


Esta notación con los corchetes en la clave se introdujo en jQuery 1.4 para tratar arrays multidimensionales o arrays que contienen objetos (u otros arrays). Esto ayuda al deserializador a diferenciar entre una matriz y un valor primitivo. Por ejemplo, si no tenía los corchetes en la clave, esas dos variables se serializarían de la misma manera:

var v1 = { "k1":"v1", "k2":"v2", "k3":["v3"] };

y

var v1 = { "k1":"v1", "k2":"v2", "k3":"v3" };

Con la notación de corchete, están codificados como

k1=v2&k2=v2&k3[]=v3

y

k1=v2&k2=v2&k3=v3

respectivamente.


Esto es principalmente una convención de nomenclatura, creo que desde PHP, que indica que la clave ( key3 ) tiene key3 . Depende del servidor decodificarlos de manera significativa.

Más detalles: http://api.jquery.com/jQuery.param/


También puede usar la configuración traditional en la llamada ajax http://api.jquery.com/jquery.ajax/#jQuery-ajax-settings

Tipo tradicional: booleano

Establézcalo en verdadero si desea utilizar el estilo tradicional de serialización de parámetros.

por ejemplo:

$.ajax({ /*usual stuff */ traditional: true })