以下面这个简单的表单为例:
<form method="post" action="reports.php">
<input type="text" name="name">
<input type="text" name="email_address">
<input type="submit" value="Submit">
我希望它将输入字段数据发送到reports.php
页,但我希望它在用户单击"Submit"
按钮时将用户引导到uploads.php
页。
在reports.php
页面上使用header("Location: uploads.php")
不是一个选项,因为reports.php
将表单数据收集到一个表中供每个人查看。在uploads.php
页面中,用户将上传的文件也将在reports.php
表中可见。
我该怎么做?
您可以检查请求reports.php
时使用的方法是否为POST
,并重定向用户。
<?php
# reports.php
if($_SERVER['REQUEST_METHOD'] === 'POST') {
// process the data
header("Location: ...");
exit;
}
或者您可以简单地创建add_report.php
文件
你可以用javascript添加"on form submit"事件。
当提交按钮被点击时-用javascript收集表单数据并将其发送到需要的地方。当ajax工作时-使用javascript将用户重定向到所需的页面。
一个完整的例子应该是这样的:
对html<form method="post" id="my_form">
<input type="text" name="name">
<input type="text" name="email_address">
<input type="submit" value="Submit">
对javascript <script>
$(function(){
$('#my_form').on('submit', function(e){
e.preventDefault();
var url = 'reports.php?' + $(this).serialize();
$.get(url, function(){
window.location.href = 'uploads.php';
});
})
})
</script>
更多信息可以在这里找到:https://api.jquery.com/serialize/
你需要重构你的代码。
听起来你的用例是:
- GET到上传:显示上传表单
- POST到某处:添加到报告中,然后显示上传表单
- GET到报告:显示报告列表
- POST到报告:添加到报告,然后显示上传表单
不要担心将"某处"设置为报告文件。
将"Add to reports"代码分离成一个函数(或多个函数),并将它们放入自己的文件中。
然后将该文件包含在报告和上传中。
使上传表单提交给上传者,然后调用"Add to reports"功能。
在报告中做类似的事情