【问题标题】:Executing a php script in javascript?在javascript中执行php脚本?
【发布时间】:2011-07-10 18:33:01
【问题描述】:

我试图在用户离开我的网站时运行一个快速的 php 脚本,并将一个变量从我的 javascript 传递给 php,但我不太确定如何包含 php 文件并将其传递给一个 var。但它实际上并没有运行 php 脚本。有什么想法吗?

(javascript 从外部活动函数获取用户名,我知道我在警报上测试了 var 并且它在那里。)

我的 JavaScript:

<script language="javascript" type="text/javascript">

            var username = null;

            function GetUsername(usernameff)
            {
                username = usernameff;
            }

            window.onbeforeunload = function () 
            {

            if (username != null)
            {

            <?php include("scripts/RemoveUserOnDisconnect.php?username=username");?>
            }

            }


            </script>

我的 RemoveUserOnDisconnect.php 文件:

<?php
    mysql_connect("mysql.mysql.com", "username", "password");
    mysql_select_db("my_db");
    mysql_query("DELETE FROM my_table WHERE username = '$username'");         
?>

【问题讨论】:

    标签: php javascript mysql variables onbeforeunload


    【解决方案1】:

    尝试 ajax 请求。根据您的 php 脚本,您将需要 $.post$.get

    jQuery:

    <script language="javascript" type="text/javascript">
    
        var username = null;
    
        function GetUsername(usernameff){
            username = usernameff;
        }
    
        window.onbeforeunload = function(){
            if (username != null){
              $.post('scripts/RemoveUserOnDisconnect.php', {username: username}, function(){
                //successful ajax request
              }).error(function(){
                alert('error... ohh no!');
              });
    
            }
        }
     </script>
    

    编辑:

    如果你使用我上面的代码,你的 php 脚本应该引用 $_POST 数组。

    <?php
        $username = $_POST['username'];
    
        mysql_connect("mysql.mysql.com", "username", "password");
        mysql_select_db("my_db");
        mysql_query("DELETE FROM my_table WHERE username = '$username'");         
    ?>
    

    【讨论】:

    • 非常感谢您提供的示例!我试了一下,你发布的内容正是如此。不过运气不好,有什么想法吗?我试着发出警报(“它起作用了”);代替您的它起作用的评论,并且警报没有出现。我应该在查询前面放一个 return 来让它触发那个函数还是什么?看看它是否正在执行?另外,我不知道这是否可能,但我只允许对脚本文件夹的“执行”权限。但我假设这可能不是问题,因为我在文件夹中有其他脚本被访问只是通过 cron 作业找到
    • 你是否包含了 jQuery 库?
    • 哦,我不知道那是 jquery,我以为它只是普通的 javascript。我在脚本中的 更高,我还在包含此的脚本选项卡中尝试了 src="scripts/jquery.js"还是不行
    • @brybam 对不起,我以为我很清楚这是 jQuery。在 HTML 文档的 head 部分中,放置此代码。 &lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"&gt;&lt;/script&gt; 另外,假设您的 php 代码有效,请确保您的 php 脚本的路径正确并且一切正常。祝你好运!
    • 嗯。我知道 php 代码有效,我在我用 flash 引用的 php 函数中使用相同的确切代码,所以我知道它正在工作。我也知道它正在获取用户名变量,因为如果我取出您推荐的代码并输入 alert(username);它出现了。我想我会提到我尝试过,$.post('scripts/RemoveUserOnDisconnect.php', {username: username}, function(res){ alert("results: " + res); 并且警报甚至没有出现
    【解决方案2】:

    您需要对 PHP 脚本进行 AJAX 调用。您的 javascript 代码只会向执行这些 MySQL 语句的 php 脚本发出后台请求。谷歌上 AJAX。推荐:学习jQuery并使用$.get()$.post()使用ajax

    【讨论】:

      【解决方案3】:

      对脚本/RemoveUserOnDisconnect.php?username=username 进行 ajax 调用。你不能在 Javascript 中包含 PHP,Javascript 在浏览器上执行,PHP 在服务器上执行..

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-12-07
        • 1970-01-01
        • 2018-02-20
        • 2012-10-09
        • 2011-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多