【问题标题】:Php inside javascript function [closed]javascript函数中的php[关闭]
【发布时间】:2012-06-18 09:05:19
【问题描述】:

我想要做的是在脚本标签内运行 php 循环内的 javascript。 例如:

<script>
$('#mydiv').mouseover(function(){
time();
function time(){
<?php  
    $secs = 45; 
    $secs--;
if($secs <= 25){
?>//javascript code here 
}
});
</script>

我的主要目的是当用户将鼠标悬停在一个 div 上时,一个 javascript 函数运行并且在该 javascript 函数内部有 php if conitions。如果时间小于 25 则执行指定的 javascript 代码。然后是另一个条件,如果时间少于 10,则执行另一个 javascript 函数。任何类型的帮助将不胜感激。谢谢

【问题讨论】:

  • 您对什么是 PHP 和 Javascript 有严重的误解。它们不能直接协同工作 - PHP 在服务器上运行,而 javascript 在客户端上运行。
  • 即使它可以工作,你确实意识到 PHP 函数中唯一发生的事情是 $secs 变为 44,因此永远不会小于 25?

标签: php javascript jquery


【解决方案1】:

JavaScript 是客户端脚本,PHP 是服务器端脚本。所以,要么你对服务器进行AJAX 调用,要么只使用纯 JS。

AJAX+PHP:

<script>
    $('#mydiv').mouseover(function(){
        $.ajax({
            url: 'secs.php',
            success: function(data) {
                var secs = parseInt(data);

                if(secs <= 10) {
                    // do stuff
                }
                else if(secs <= 25) {
                    // do stuff
                }
            },
        });
    });
</script>

secs.php:

<?php
    session_start();

    if(!isset($_SESSION['secs'])) $_SESSION['secs'] = 45;
    else echo $_SESSION['secs'] --;
?>

纯 JS:

<script>
    var secs = 45;

    $('#mydiv').mouseover(function(){
        secs --;

        if(secs <= 10) {
            // do stuff
        }
        else if (secs <= 25) {
            // do stuff
        }
    });
</script>

【讨论】:

  • 我知道如何使用js。无论如何感谢您的回复。
【解决方案2】:

PHP 在服务器上运行并输出一些文本。

然后浏览器将该文本解释为 HTML/JS/等。

除非您发出新的 HTTP 请求,否则您无法运行 PHP 来响应客户端事件。

如果您知道 PHP 在页面构建时关心的值,那么您可以生成 JavaScript,并将该数据存储在变量中。

【讨论】:

    【解决方案3】:

    您不能在 Javascript 中使用 PHP,如果您需要服务器端操作,您应该使用 AJAX。 jQuery has a neat implementation of it.

    【讨论】:

      【解决方案4】:

      您不能这样做,因为 php 在服务器上运行,而 javascript 在客户端上运行。 这意味着您的 php 代码在服务器上转换为 DHTML 并发送到客户端。 但是javascript在客户端上运行......所以如果你想将它们结合起来。您必须再次向客户端请求服务器(例如通过 ajax)。

      但是回到你的代码......你为什么不在javascript中计算时间? 你可以通过var date = new Date(); time = date.getCurrentTime()得到你想要的

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-11-24
        • 2013-11-23
        • 2013-02-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-06
        • 1970-01-01
        相关资源
        最近更新 更多