【问题标题】:Javascript popup after php / mysql database updatephp / mysql 数据库更新后的 Javascript 弹出窗口
【发布时间】:2014-04-05 03:38:06
【问题描述】:

我拥有的是在客户端签署表单后更新数据库字段的 php。这可行,但我希望它在确认用户通过单击确定签名后重定向到新页面。如果他们点击 CANCEL,它将让他们留在同一页面上。

<?php
    $username = 'joeblow';
    require_once ("/mypath/include/connnect_db.php");
?>

    <p>Please only submit this after above form is completely signed.</p>
    <form id="item_complete" method="post">
      <input name="submit" type="submit" form="item_complete"  value="Submit After Signing">
    </form>
<?php
    if(isset($_POST['submit'])) {  //if the submit button is clicked
        $complete = 'c';
        $query = "UPDATE mytbale SET mycolumn='c' WHERE username='$username'";
        mysqli_query($con,$query) or  die("Cannot Update");
        echo "<script> confirmFunction(); </script>";
    }
    require_once ("/mypath/include/disconnect_db.php");
?>
    <script type="text/x-javascript">
        function confirmFunction(){
            var r=confirm("Confirm that you have signed the form!");
            if (r==true){
              window.open("http://smartpathrealty.com/smart-path-member-page/");
              }
            else {
              }
            }
    </script> 

我的问题是 php 更新数据库后 javascript 函数没有执行。

感谢您对此提出的任何建议或意见。

【问题讨论】:

  • PHP 在服务器上执行。 Javascript 在客户端上执行。你想要的是不可能的。您可以让服务器端 PHP 代码触发客户端警报,然后等待客户端响应。
  • 在用户提交表单后是否有重定向到页面。我非常愿意接受建议。

标签: javascript php mysql


【解决方案1】:
<script type="text/javascript">
    function confirmFunction(){
        var r=confirm("Confirm that you have signed the form!");
        if (r==true){
          window.open("http://smartpathrealty.com/smart-path-member-page/");
          }
        else {
          }
        }
</script> 
<?php
if(isset($_POST['submit'])) {  //if the submit button is clicked
    $complete = 'c';
    $query = "UPDATE mytbale SET mycolumn='c' WHERE username='$username'";
    mysqli_query($con,$query) or  die("Cannot Update");
    echo "<script> confirmFunction(); </script>";
}
require_once ("/mypath/include/disconnect_db.php");
?>

<script type="text/javascript">


    window.onload = function(){
        <?php
            if(submitted){
                echo "confirmFunction();";
            }
        ?>
    }
</script> 

【讨论】:

  • 这会在点击提交按钮之前加载确认。
  • @user3376610 我为您的单页解决方案更新了答案。这个想法是让 window.onload 的内容依赖于 SQL 事务完成时设置的变量。当然,像其他人建议的多页面解决方案会更干净。
【解决方案2】:

您可以通过 ajax 发布表单,并在您的 php 中返回对 javascript 的响应。那就是你可以使用回调来触发新窗口。

这是一个 jquery 示例:

$.post('/myscript.php', {foo: 'bar'}).done(function (response) {

window.open(......);

});

【讨论】:

  • 对不起,我根本不关注这个。
【解决方案3】:

我相信您使用相同的页面进行登陆和更新。您需要更新您的回声以添加 onload。

echo "<script> window.onload=confirmFunction(); </script>";

希望这是您正在寻找的。​​p>

【讨论】:

  • 这会在点击提交按钮之前加载确认。
  • 我的意思是从你的代码 sn-p 中添加回声。你只有 1 个在 if(isset($_POST['submit'])) {.....},为什么它会默认运行?
【解决方案4】:

试试:

if (r==true) {
    window.open("http://smartpathrealty.com/smart-path-member-page/");
}
else {
    window.location = "PAGE THAT YOU WANT"; 
}

【讨论】:

  • 这部分脚本已经正常工作,只是想弄清楚在用户提交表单并执行所有 php 之后,用户将看到一个弹出确认窗口。
【解决方案5】:

问题是您使用单独的&lt;script&gt; 标记并在定义之前调用该函数。这两个一起工作不好。另外,我很确定&lt;script type="text/x-javascript"&gt; 无论如何都不起作用since it's outdated 而你想要&lt;script type="text/javascript"&gt;

您可以执行以下操作:

上移功能并修复x-javascript

<?php
    $username = 'joeblow';
    require_once ("/mypath/include/connnect_db.php");
?>
<p>Please only submit this after above form is completely signed.</p>
<form id="item_complete" method="post">
    <input name="submit" type="submit" form="item_complete"  value="Submit After Signing">
</form>
<script type="text/javascript">
    function confirmFunction(){
        var r=confirm("Confirm that you have signed the form!");
        if (r==true){
          window.open("http://smartpathrealty.com/smart-path-member-page/");
          }
        else {
          }
        }
</script> 
<?php
if(isset($_POST['submit'])) {  //if the submit button is clicked
    $complete = 'c';
    $query = "UPDATE mytbale SET mycolumn='c' WHERE username='$username'";
    mysqli_query($con,$query) or  die("Cannot Update");
    echo "<script> confirmFunction(); </script>";
}
require_once ("/mypath/include/disconnect_db.php");
?>

小提琴Fiddle

【讨论】:

  • 这帮助我找到了我在底部发布的解决方案。
  • 好的,太好了。我很高兴能帮上忙。
猜你喜欢
  • 1970-01-01
  • 2014-05-09
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-29
  • 1970-01-01
相关资源
最近更新 更多