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 })