在表单提交,执行一些PHP,然后执行Javascript代码

时间:2012-11-03 04:21:13

标签: php javascript

这就是我想要做的: 提交表单时(通过单击按钮)

  1. 我想使用PHP
  2. 向MySQL数据插入一些数据
  3. 基于插件的成功,我想运行一些JavaScript(JS)代码。 (实际上,将使用AJAX从JS数组中插入更多数据,但在下面的测试代码中,我只是使用数组显示警报)。另外,我需要首先执行PHP,因为我需要使用mysqli_insert_id()函数通过PHP从MySQL获取autoincremetn ID。
  4. 在插入所有数据(或者已经执行了PHP和JS代码)之后,我想返回到发起提交的同一页面,在测试代码中,此页面被称为test.php
  5. 以下是我的测试代码(在test.php页面中):

    <?php
    
    // Require the configuration which controls controls error reporting:
    require ('config.inc.php');
    
    // Require the database connection:
    require (MYSQL);
    
    /* PAGE CONTENT STARTS HERE! */
    ?>
    <!DOCTYPE html>
    <html lang="en">
    <head> 
    <meta charset="utf-8">
    <!--JQUERY-->
    <script type="text/javascript" src="js/jquery-1.8.2.min.js" ></script>
    
    <script type="text/javascript">
        var store_categories = []; 
        function init_filtering() {
            store_categories.push('data1');
            alert ("alert1: "+ store_categories);
        }
    </script>
    
    <script type="text/javascript">$( init_filtering );</script>
    
    </head>  
    <body>
    
    <?php
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
          $q = "INSERT INTO sms_category (sms_updated_id, category) VALUES (1, 'categories')";      
          $r = mysqli_query ($dbc, $q);
        }
    
    if (mysqli_affected_rows($dbc) == 1) {
    ?>
        <script type="text/javascript">
            alert ("alert2: "+ store_categories);
        </script>
    <?php
    } // end if
    ?>
    
    <form id="edit_data" action="test.php" method="post">
    <input type="submit" value="Save">
    </form>
    
    </body>
    </html>
    

    现在发生了什么:

    1. Alert1正确显示store_categories数组
    2. 中的数据
    3. 但是当我点击提交按钮时,Alert2仍显示空白(或者只显示“alert2:”,即无法显示store_categories数组中的值)。
    4. 所以,这是我的问题:

      1. 为什么alert2没有显示store_categories数组?
      2. 当我点击提交按钮时,我可以做什么才能使store_categories数组具有其值?
      3. 提前感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

可能是有效的尝试一下。 我认为在提交表单时,只会显示第二个警告。

<script type="text/javascript">init_filtering()</script>
    <?php
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
          $q = "INSERT INTO sms_category (sms_updated_id, category) VALUES (1, 'categories')";      
          $r = mysqli_query ($dbc, $q);
if (mysqli_affected_rows($dbc) == 1) {
   ?>
        <script type="text/javascript">
            alert ("alert2: "+ store_categories);
        </script>
    <?php
    } 
        }

        ?>