表单总是发布到其中的“action”属性。如果您不希望它发布给自己,请将您的表单开始标签设置为<form action="someexample.php" method="post">
. 结果将是 POST 数据被发送到someexample.php
而不是发送到与表单相同的页面。
如果您正在查看一个页面上的多个表单选项而无需重定向,请查看 AJAX 提交。
想法是将表单发送到您的接收文件,处理 POST 数据,并返回您想要从该过程返回的任何内容。例如:
$("form").submit( function(event) {
event.preventDefault(); //prevent the file submitting
var formData = $(this).serialize(); //process the form into an array for submission
$.ajax({
url: "receiver.php", //the url of the receiving file
type: "post", //setting method to post
data: formData, //set the data being sent to the form contents
success: function(response) {
$("div").html(response); //set the receiving div to the html you echo'd in the php document
}
});
});
您的receiver.php
文件可能看起来与接收 POST 数据的普通 PHP 文档完全相同,因此<?php if(isset($_POST['submit'])) {} ?>
仍将完全按照您的预期工作,而无需页面重定向!这个解决方案确实需要jQuery。
编辑:
为了处理更新的问题,if(criteria) { $abc = 'xyz'; }
有一些建议。
要保持异步方法,请使用$_SESSION
变量。您可以使用 设置它们receiver.php
并在起始文档中处理它们。
要返回到同一文档的标准提交方法,请将您的多个选项分解为单选输入、复选框或单独的表单。
所以:
<input type="radio" name="method" value="submit" />
<input type="radio" name="method" value="clear" />
这样您就可以选择在那里提交的方法。
或者您可以将它们分解为以下形式:
<form method="post">
<input type="submit" name="submit" value="submit" />
</form>
<form method="post">
<input type="submit" name="clear" value="clear" />
</form>
最后,如果您想在提交和清除之间进行更改,您可以在单击时更改隐藏输入的值,因此:
的HTML:
<form method="post">
<input type="hidden" id="method" name="method" value="" />
<input type="submit" id="submit" value="submit" name="submit" />
<input type="submit" id="clear" value="clear" name="clear" />
</form>
jQuery:
$("#submit").click( function(event) {
event.preventDefault();
$("#method").val("clear"); //set the method to clear
$("form").submit(); //submit the form normally
});
$("#clear").click( function(event) {
event.preventDefault();
$("#method").val("submit");
$("form").submit();
});
PHP:
<?php
if(isset($_POST['submit'])) {
//do something
} elseif(isset($_POST['clear'])) {
//do something else
}