2012-04-29 62 views
10

Tôi sử dụng PHP để nhận các giá trị nút radio từ một trang html. Html của tôi trông giống như sau:giá trị hợp lệ cho thuộc tính name trong html

<input type="radio" name="1.1" value="yes"> 
<input type="radio" name="1.1" value="no"> 

<input type="radio" name="1" value="yes"> 
<input type="radio" name="1" value="no"> 

Kết quả là $ _POST ['1'] trả về giá trị, nhưng $ _POST ['1,1'] không trả về gì cả. Tôi đã kiểm tra các thông số kỹ thuật html 4, nói giá trị cho thuộc tính name chỉ bắt đầu bằng chữ cái, nhưng 1 không phải là một chữ cái, làm thế nào đến nó được trả lại trong khi 1,1 không? Hay có phép thuật nào khác đang diễn ra ở đây? Tôi sử dụng phiên bản Chrome mới nhất. Cảm ơn.

Trả lời

12

Theo quy tắc HTML, thuộc tính name có thể có bất kỳ giá trị nào: thuộc tính được khai báo với loại CDATA. Đừng nhầm lẫn với các tham chiếu đến các thuộc tính được khai báo là có loại NAME. Xem http://www.w3.org/TR/html4/interact/forms.html#adef-name-INPUT

Khi sử dụng $POST[...] trong PHP, bạn cần lưu ý quy tắc PHP này: “Dấu chấm và dấu cách trong tên biến được chuyển thành gạch dưới. Ví dụ <input name="a.b" /> trở thành $_REQUEST["a_b"].”Xem http://www.php.net/manual/en/language.variables.external.php

Vì vậy $_POST['1'] nên hoạt động như là và làm việc, nhưng thay vì $_POST['1.1'] bạn cần phải viết $_POST['1_1'].

+0

Cảm ơn bạn đã đăng liên kết thứ hai! – Michael

+0

Đây là tài liệu HTML5 tương ứng của thuộc tính name: https://www.w3.org/TR/html5/forms.html#naming-form-controls:-the-name-attribute –

+0

@Jukka K. Korpela: Cái gì nó có nghĩa là, nếu bạn viết 'Đừng nhầm lẫn với các tham chiếu đến các thuộc tính được khai báo là có kiểu NAME.'? Đâu là sự khác biệt? – John

1

Hãy thử thay thế khoảng thời gian cho một thứ khác như dấu nối. Trong cả hai hình thức và mã php. Các khoảng thời gian thường được sử dụng cho a. trong tên tiện ích. Khi nói đến tên khóa cho các tham số trong tiêu đề nhận hoặc đăng, bạn chỉ muốn sử dụng các ký tự chữ và số, với một số ký tự đặc biệt nói chung. Chẳng hạn như dấu gạch ngang, dấu gạch dưới, v.v. Bạn luôn có thể thực hiện mã hóa URL nếu cần.

0

Điều này rất dễ giải quyết với tìm kiếm google thứ hai của bạn tôi. Ngoài ra, bạn nên đặt tên cho các mục nhập của bạn bằng văn bản chứ không phải số. Chúng không được chứa bất kỳ ký tự nào như.,!? Điều này có thể gây ra vấn đề. Để biết thêm thông tin, hãy gửi dữ liệu đến số http://www.homeandlearn.co.uk/php/php4p10.html

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