2012-08-22 14 views
9

jQuery .serialize() zamienia "[]" w% 5B% 5DRóżnica między% 5B% a% 5B0%?

PHP http_build_query wydaje się włączyć pierwszy "[]" w% 5B0% 5D, drugi do% 5B1% 5D, itp więc wydaje się używać jakiegoś licznika.

Dlaczego istnieją różnice w tych niemal identycznych funkcjach?

Czy to tylko moja przeglądarka, która je wyróżnia? Jak mogę się upewnić, że http_build_query nie doda dodatkowego licznika (lub niech jQuery wie, że potrzebuję dodatkowego licznika).

+1

Czy jesteś pewien, że nie kodowałeś "[1]" w tym drugim przypadku? – cheeken

+2

'% 5B' jest zakodowaną wersją' [. "0", które tam masz, to literalne zero, a nie część zakodowanych danych. '% 5D' to zakodowana wersja'] '. Wygląda na to, że mogłeś niechcący zakodować '[0]' (a następnie '[1]') zamiast '[]'. – aroth

+0

Mogę być. Nie można wyłączyć 'array_keys' Chyba w PHP. Nie jestem jednak pewien, jak jQuery ich nie dodaje :( – Tessmore

Odpowiedz

18

%5B0%5D jest zakodowana wersja [0], %5B1%5D jest zakodowana wersja [1] itp

%5B is [ 
%5D is ] 

Numer między jest dosłownym charakter, nie jest częścią każdej% kodowania HH.

+0

Absolutnie [na miejscu]! –