Gửi biểu mẫu HTML trên trang của chính mình


103

Tôi muốn một biểu mẫu HTML để gửi cho chính nó. Làm cách nào để sử dụng actionthuộc tính?

  1. <form action="">
  2. <form action="#">
  3. <form action="some/address">
  4. <form>

Cái nào thích hợp hơn?


1
Tôi hy vọng bạn đã xem bài đăng này stackoverflow.com/questions/1131781/…
Tariqulazam

<doctype> của tài liệu của bạn là gì ?? Nó sẽ giúp trả lời bạn.
Milche Patern

chỉ đơn giản không sử dụng atribute hành động
Milche patern

Câu trả lời:


124

Vào năm 2013, với tất cả nội dung HTML5, bạn chỉ có thể bỏ qua thuộc tính 'action' để tự gửi biểu mẫu

<form>

Trên thực tế, tiểu mục Gửi biểu mẫu của bản nháp HTML5 hiện tại không cho phép action = "" (thuộc tính trống). Nó chống lại đặc điểm kỹ thuật.

Từ câu trả lời Stack Overflow khác này .


1
Tôi đã sử dụng <? Php $ _PHP_SELF?> Và gặp lỗi rằng hành động không được để trống, tôi đoán bị bệnh chỉ cần bỏ nó đi
Drewdin

2
Tôi bối rối. W3 có hợp lệ không khi loại bỏ toàn bộ actionthuộc tính, nhưng không được để trống?
ông martin

Tôi cần truy cập các tham số bằng $ _GET hoặc $ _POST thì sao?
màu đen

21

Bạn có thể để trống thuộc tính hành động. Biểu mẫu sẽ tự động gửi chính nó trong cùng một trang.

<form action="">

Theo đặc tả w3c , nói chung thuộc tính action phải là url hợp lệ không trống. Ngoài ra còn có giải thích cho một số trường hợp trong đó thuộc tính action có thể bị để trống.

Hành động của một phần tử là giá trị của thuộc tính formaction của phần tử, nếu phần tử là Nút gửi và có thuộc tính như vậy hoặc giá trị của thuộc tính hành động của chủ sở hữu biểu mẫu, nếu nó có một hoặc chuỗi trống.

Vì vậy, cả hai đều vẫn hợp lệ và hoạt động:

<form action="">
<form action="FULL_URL_STRING_OF_CURRENT_PAGE">

Nếu bạn chắc chắn đối tượng của mình đang sử dụng trình duyệt html5, bạn thậm chí có thể bỏ qua thuộc tính action:

<form>

Bạn có thể xác nhận thuộc tính "action" có thể được để trống và xác thực không?
Milche Patern

4
Không xác thực. : Giá trị không hợp lệ cho hành động thuộc tính trên biểu mẫu phần tử: Không được để trống.
Azd325,

2
Theo HTML5 đặc tả một chuỗi rỗng không được phép là hành động: w3c.github.io/html/sec-forms.html#element-attrdef-form-action
Thomas

1
Đây là điều duy nhất phù hợp với tôi. Liên kết <br/> Thuộc tính nội dung hành động và formaction, nếu được chỉ định, phải có giá trị là một URL không trống hợp lệ, có khả năng được bao quanh bởi khoảng trắng ........ nếu nó có một hoặc nếu không thì là chuỗi trống.
JoelBondurant

khái niệm "không xác thực" là vô lý vì người duy nhất có thể xác thực XML của bạn là bạn. Đó là quan điểm của XML - bạn nói một loạt các quy tắc mà bạn muốn giữ đúng cho tài liệu XML của mình, mã hóa chúng trong DTD và để trình phân tích cú pháp XML thực hiện việc phân tích cú pháp được coi là khó khăn. Đây là một lý do tại sao XML vẫn quan trọng cho đến ngày nay - bạn có thể lấy bất kỳ mô hình nào bạn muốn, có thể là JSON, văn bản, csv, viết một biến đơn giản từ định dạng đó sang XML, viết DTD cho XML đó, và bạn không cần nữa. để viết trình xác thực của riêng bạn, XML đã làm được điều đó!
Dmitry

21

Sử dụng ?:

<form action="?" method="post">

Nó sẽ đưa người dùng trở lại cùng một trang.


Điều này thật tuyệt!
beppe9000,

3
Không quá tuyệt vời. Điều này sẽ xóa tất cả các chuỗi truy vấn của URL hiện tại nếu nó có chúng.
OMA

1
Tôi muốn loại bỏ các chuỗi truy vấn: 3
VoidZA

12

Nếu bạn đang gửi biểu mẫu bằng php, hãy chắc chắn sử dụng:

action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"

để bảo mật.


-1

Bạn có thể làm điều đó bằng cách sử dụng cùng một trang trên thuộc tính action: action='<yourpage>'

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.