我已尽可能多地研究这个问题,到目前为止还没有找到有效的解决方案。
基本上我所拥有的是一个用户输入匹配结果的PHP页面,表单操作包含一个标题,将它们带到更新的排名表。我已从用户输入结果的页面禁用了缓存,但这不适用于在浏览器中单击的“后退”按钮。如果他们确实点击了回来,页面会显示它之前的状态,在他们输入的最后得分之前,如果提交,则会导致联赛表格出现问题。
我已经让表单操作在新选项卡中运行,这意味着他们无法在浏览器中单击“返回”,而是必须使用“后退”链接,这意味着页面将始终重新呈现。很好,但问题是表单页面在其原始选项卡中打开了。
有没有办法解决这个问题。我意识到调用javascript closeWindow()函数'onSubmit'将在数据库更新之前关闭窗口。
这是我到目前为止,新标签打开,但原始标签仍然打开。 有关添加的信息,我需要关闭的页面将通过主页上的链接在新选项卡中打开。
<?php
require_once "pdo_enl_connect.php";
$database=dbNB_connect();
echo "<table>";
echo "<form action=\"update_table_a.php\" target=\"_blank\" method=\"post\">";
$query=$database->query("SELECT team_id, team_name, team_score, opposition_score, opposition_id, opposition_name from results_a");
while ($row = $query->fetch(PDO::FETCH_NUM)) {
echo "<input type=\"hidden\" name=\"team[]\" value=\"$row[1]\">
<input type=\"hidden\" name=\"opposition[]\" value=\"$row[5]\">
<input type=\"hidden\" name=\"team_id[]\" value=\"$row[0]\">
<input type=\"hidden\" name=\"opposition_id[]\" value=\"$row[4]\">
<tr><td>$row[1]<td><input type=\"text\" name=\"team_score[]\" value=\"$row[2]\" <td>
<input type=\"text\" name=\"opposition_score[]\" value=\"$row[3]\"><td>$row[5] </tr>";
}
echo "</table>";
$query2=$database->query("SELECT team_score, opposition_score from results_a");
while ($row = $query2->fetch(PDO::FETCH_NUM)) {
echo "<input type=\"hidden\" name=\"prev_team_score[]\" value=\"$row[0]\">
<td><input type=\"hidden\" name=\"prev_o_score[]\" value=\"$row[1]\">";
}
echo "<input type=\"submit\" value=\"Go\" name=\"go\">";
echo "</form>";
if(isset($_POST['go'])) {
echo "<script>window.close();</script>";
}
?>
答案 0 :(得分:0)
<?php
if(isset($_POST['buttonname']))
echo "<script>window.close();</script>";
?>
并从window.close()
onSubmit
答案 1 :(得分:0)
也许尝试将AJAX用于onSubmit?
var request = new XMLHttpRequest();
request.open("POST","submitdata.php",false);
request.onload = function(){ window.close(); };
request.setRequestHeader("Content-type","application/x-www-form-urlencoded");
request.send("name="+name+"&surname="+surname+"&pass="+pass...);
这会将表单数据发送到更新数据的php脚本,然后在响应加载后,它将关闭窗口。这是同步的(请求开放中为“false”),因此用户不应该弄乱您的数据库。