2012-08-22 40 views
9

jQuery .serialize() biến "[]" thành% 5B% 5DSự khác biệt giữa% 5B% và% 5B0%?

PHP http_build_query dường như biến "[]" đầu tiên thành% 5B0% 5D, thứ hai thành% 5B1% 5D, v.v. dường như đang sử dụng một số loại truy cập.

Tại sao có sự khác biệt trong các hàm gần như giống hệt nhau này?

Chỉ là trình duyệt của tôi khiến chúng khác biệt? Làm thế nào tôi có thể đảm bảo rằng http_build_query không thêm bộ đếm phụ (hoặc để jQuery biết tôi cần thêm bộ đếm).

+1

Bạn có chắc là bạn không mã hóa '[1]' trong trường hợp sau? – cheeken

+2

'% 5B' là phiên bản được mã hóa của' ['. '0' bạn có số không bằng chữ và không phải là một phần của dữ liệu được mã hóa. '% 5D' là phiên bản được mã hóa của'] '. Vì vậy, có vẻ như bạn có thể đã vô tình mã hóa '[0]' (và sau đó là '[1]') thay vì '[]'. – aroth

+0

Tôi có thể. Bạn không thể tắt 'array_keys' tôi đoán trong PHP. Không thực sự chắc chắn như thế nào jQuery không thêm chúng sau đó mặc dù: ( – Tessmore

Trả lời

18

%5B0%5D là phiên bản được mã hóa của [0], %5B1%5D là phiên bản được mã hóa của [1] vv

%5B is [ 
%5D is ] 

Số ở giữa là một ký tự chữ, không phải là một phần của bất kỳ mã hóa HH%.

+0

Hoàn toàn [tại chỗ trên]! –

Các vấn đề liên quan