2012-08-22 22 views
9

jQuery .serialize() gira "[]" en% 5B% 5D¿Diferencia entre% 5B% y% 5B0%?

http_build_query PHP parece girar la primera "[]" en% 5B0% 5D, la segunda en% 5B1% 5D, etc. Por lo tanto, parece estar usando algún tipo de contador.

¿Por qué hay diferencias en estas funciones casi idénticas?

¿Es solo mi navegador el que los hace diferentes? ¿Cómo puedo asegurarme de que http_build_query no agregue el contador extra (o deje que jQuery sepa que necesito el contador extra).

+1

¿Estás seguro de que no codificabas '[1]' en este último caso? – cheeken

+2

'% 5B' es la versión codificada de' ['. El '0' que tienes allí es un cero literal y no parte de los datos codificados. El '% 5D' es la versión codificada de'] '. Por lo tanto, parece que puede haber codificado involuntariamente '[0]' (y luego '[1]') en lugar de '[]'. – aroth

+0

Podría ser. No se puede desactivar 'array_keys', supongo en PHP. No estoy muy seguro de cómo jQuery no los agrega, sin embargo :( – Tessmore

Respuesta

18

%5B0%5D es la versión codificada de [0], %5B1%5D es la versión codificada de [1], etc.

%5B is [ 
%5D is ] 

El número en el medio es un carácter literal, no parte de cualquier HH codificación%.

+0

¡Absolutamente [punto activado]! –