php / mysql 数据库更新后的 Javascript 弹出窗口

Posted

技术标签:

【中文标题】php / mysql 数据库更新后的 Javascript 弹出窗口【英文标题】:Javascript popup after php / mysql database update 【发布时间】: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 代码触发客户端警报,然后等待客户端响应。 在用户提交表单后是否有重定向到页面。我非常愿意接受建议。 【参考方案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

【讨论】:

这帮助我找到了我在底部发布的解决方案。 好的,太好了。我很高兴能帮上忙。

以上是关于php / mysql 数据库更新后的 Javascript 弹出窗口的主要内容,如果未能解决你的问题,请参考以下文章

更新查询 PHP MySQL

Hibernate不能实时获取MySQL数据库的更新

PHP怎么更新mysql数据库

通过android使用php更新mysql数据库

PHP / MySQL / AJAX - 更新多个数据

无法使用 php 和 Mysql 更新数据库