提交表格后关闭标签
我已经尽我所能对此问题进行了研究,并且迄今尚未找到可行的解决方案。提交表格后关闭标签
本质上,我所拥有的是一个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>";
}
?>
<?php
if(isset($_POST['buttonname']))
echo "<script>window.close();</script>";
?>
和删除window.close()
从onSubmit
我试过了,但它只是关闭窗口,因为它打开。我将它放在表单页面上的php脚本的末尾,这是正确的位置吗? – DJC
是的,这是正确的位置 – CodeFanatic
嗯,仍然没有运气,我也试过这之前,因为已经看到它张贴在本网站的其他地方。新标签打开,但这个仍然是开放的 – DJC
使用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”),所以用户不应该把数据库搞乱。
更新后未设置变量.... – user1844933
对不起,请您详细说明一下吗? – DJC