【问题标题】:How to execute javascript inside a php page如何在 php 页面中执行 javascript
【发布时间】:2014-10-22 19:35:51
【问题描述】:

我有一个确认电子邮件帐户以进行验证的 php 页面。

我想做的是当页面重定向时我想清除所有本地存储并在我的javascript中触发我的点击事件。

我的问题是我的 php 文件中的脚本没有执行。

我的 verify.php 中的整个 php 代码

<?php

include_once('database.php');

$db = new Connection();
$db = $db->dbConnect();
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

    $vemail = $_GET['vemail'];
    $vhash = $_GET['vhash'];

    $search = "SELECT user_email, user_hash, user_active FROM tbl_user WHERE user_email = :vemail AND user_hash = :vhash AND user_active = '0'";

    $verify = $db->prepare($search);
    $verify->bindParam(':vemail', $vemail, PDO::PARAM_STR);
    $verify->bindParam(':vhash', $vhash, PDO::PARAM_STR);
    $verify->execute();
    $match = $verify->rowCount(); 

    if($match > 0){         

        $qup = "UPDATE tbl_user SET user_active='1' WHERE user_email= :vemail AND user_hash = :vhash AND user_active='0'";

        $query = $db->prepare($qup);
        $query->bindParam(':vemail', $vemail, PDO::PARAM_STR);
        $query->bindParam(':vhash', $vhash, PDO::PARAM_STR);
        $query->execute();  

        header('Location: http://pro13.pnp.gov.ph/nup-application'); 

    ?>
        <script>
        $(document).ready(function(){
            localStorage.clear();   
            $(".show-page[data-page=Email_verified]").trigger("click"); 
        });
        </script>
        <?php
        exit;
    }else{

        header('Location: http://pro13.pnp.gov.ph/nup-application'); 

        ?>
        <script>
        $(document).ready(function(){
            localStorage.clear();   
            $(".show-page[data-page=Email_alreadyVerified]").trigger("click");  
        });
        </script>
        <?php
        exit;
    }

?>

【问题讨论】:

  • 请接受答案或添加您自己的答案并接受。这样做可以防止出现这个问题没有答案。 @user3986930

标签: javascript php jquery redirect pdo


【解决方案1】:

当然它不会被执行,因为你告诉浏览器重定向到不同的页面。浏览器不再关心其他任何事情。

解决方案:使用 javascript 重定向而不是通过标头响应进行重定向。

示例:代替这个

header('Location: http://pro13.pnp.gov.ph/nup-application'); 

?>
    <script>
    $(document).ready(function(){
        localStorage.clear();   
        $(".show-page[data-page=Email_verified]").trigger("click"); 
    });
    </script>
    <?php
    exit;

这样做

?>
    <script>
    $(document).ready(function(){
        localStorage.clear();   
        $(".show-page[data-page=Email_verified]").trigger("click"); 
        window.location.href = 'http://pro13.pnp.gov.ph/nup-application';
    });
    </script>
    <?php
    exit;

【讨论】:

  • 请注意,但是...如果响应不包含该元素,则脚本无论如何都不会工作。上一页不见了,取而代之的是您现在正在生成的页面。你不能告诉浏览器点击它上面的东西。
  • @cHao 我不知道他的页面是什么样子或者它是如何构建的,所以我无法确定是否还有这个元素(因为它是在解析 verify.php 之前打印的)或如果它消失了。所以我只是把它包括在内。如果元素消失了,他当然必须删除它。但是在不知道表单是否真的直接进入 verify.php 或首先进入不同的脚本时,在这种情况下我真的无能为力。
  • 是的......没有足够的信息来知道该元素是否存在。你的回答没有错。 :) 不过,OP 似乎对什么时候运行有点困惑,所以我认为值得一提。
【解决方案2】:

您必须了解服务器端和客户端。 PHP 是一个服务器端脚本,它在您的 Web 服务器上执行,执行数据库查询、页面呈现和响应浏览器的请求。

一旦 PHP 服务器将其响应发送到您的浏览器,您(通常)会得到一个由 Web 浏览器解析的 HTML 页面。这是客户端。 Javascript 在客户端运行,这意味着它只能使用页面上已有的内容(当然,AJAX 例外)。

我没有在您的 PHP 脚本中看到呈现表单的部分,我认为该部分位于电子邮件字段中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-18
    • 1970-01-01
    • 2014-03-23
    • 2017-09-17
    • 2012-07-02
    • 1970-01-01
    相关资源
    最近更新 更多