提交表格后关闭标签

时间:2014-02-07 10:35:00

标签: javascript php

我已尽可能多地研究这个问题,到目前为止还没有找到有效的解决方案。

基本上我所拥有的是一个用户输入匹配结果的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>";
}

?> 

2 个答案:

答案 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”),因此用户不应该弄乱您的数据库。