1

我对 Javascript 编程相当陌生,我找不到关于如何从 javascript 变量创建 PHP 变量的广泛文档。有人可以给我看一个例子吗?在以下示例中,'t' 是我想在 PHP 中使用的 Javascript 变量:

    <script type="text/javascript">
        function readtime(){
             var d = new Date();
             var c_hour = d.getHours();
             var c_min = d.getMinutes();
             var c_sec = d.getSeconds();
             var t = c_hour + ":" + c_min +":" + c_sec;
                           }
    </script>
4

6 回答 6

2

由于所有 PHP 脚本都在服务器上运行,因此在页面加载之后或页面加载时没有 AJAX 就无法做到这一点,但这可能会破坏 PHP 变量的用途。但是,您可以使用 php 变量定义 javascript 变量。

<?php
  $foo = "bar";
?>
<script type="text/javascript">
  foo = '<?php echo $foo; ?>';
  alert(foo);
</script>

如果您只需要将日期和时间放入 php 变量中,我也会看看PHP 日期函数。

于 2013-06-10T16:35:58.977 回答
2

正如其他人所提到的,PHP 在服务器上运行 - Javascript 在客户端上运行。我认为您可能会更详细地了解这意味着什么,以及为什么没有“简单的答案”来解决这个问题。

服务器是存储代码的计算机。
客户端是您正在查看结果页面的浏览器。
这可能在同一台计算机上,尤其是在测试时,但它们仍被视为独立的实体。

运行 PHP + Javascript 应用程序时:

1:浏览器向服务器发出请求。
2:服务器拉起相关的PHP,对其进行处理,并将其插入到html中适当的位置。
3:结果数据(html + javascript)通过互联网发送到浏览器,浏览器接收它。
4:浏览器显示原始数据(如 html)。
5:浏览器处理 javascript 并相应地更改 html。
6:页面上的额外活动可能导致#4 的不断重复,或返回到#1。

现在,人们推荐 Ajax 调用的原因如下: Ajax 调用将在“后台”向服务器发出请求。它不会导致页面重新加载,因此跳过第 4 步。它只是接收相关数据,对其进行处理,并根据需要对已经存在的 html 进行更改。

但这也意味着您可以向服务器发送请求以请运行 PHP 的特定部分 - 将数据保存到数据库,请求新数据,运行计算......

然而。每种类型的请求都需要在 PHP 中拥有自己的新访问点——如果您愿意,可以使用没有 html 的 PHP 页面。Json 通常是传输选择的数据格式,但也仍然使用 xml(AJAX 中的 X)。

这不是一个简单的行为,并且导致代码中的很多复杂性...但是由于 PHP 可以构建 javascript,但 javascript 不能直接影响 PHP,使得数据的传输通常是单向的,这是唯一的将javascript结果带回服务器以便PHP可以处理它的方法。您不能只是“更改 PHP 变量”——您需要再次从头开始启动 PHP,并初始化所有相关变量,以获得正确的结果。你没有从中断的地方继续,你正在提出一个全新的请求。

希望这可以帮助!

于 2013-06-10T16:48:38.123 回答
1

您可以通过 ajax 调用将您的 javascript 变量发送到 php 页面。这就是您的操作方式

    function loadXMLDoc()
    {
var a=document.getElementById('id').value//this is your js variable to be sended to a php page
    var xmlhttp;
    if (window.XMLHttpRequest)
      {// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
      }
    else
      {// code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
      }
    xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
       //response
        }
      }
    xmlhttp.open("GET","Xyz.php?variable="+a,true);
    xmlhttp.send();

    }

then on your php page get the values by using $_REQUEST['variable']

    $PHP_variable=$_REQUEST['variable'];
于 2013-06-10T16:40:41.020 回答
0

如果您出于某种原因想在 PHP 中使用您的变量,唯一的方法是通过 Ajax 调用。这会将变量发送到服务器,您将能够像您想要的那样对待它,并且能够将它发送回 Ajax 并在您的页面中执行您想要的操作。

但是您将无法在 PHP 中使用 Javascript 的结果,就像您从 JS 转换为 PHP 一样,因为 JS 是客户端和 PHP 服务器端。

于 2013-06-10T16:30:35.970 回答
0

不,不是没有 AJAX(在这种情况下不起作用)。PHP 是一种服务器端语言,用于生成网页,然后网络服务器将其发送给用户。Javascript 是一种客户端语言(在用户的浏览器中运行);因此,它总是在所有 PHP 完成后运行。您可以使用 PHP 来生成 JavaScript,但反之则不行。

在 PHP 中,要以该格式获取当前时间,请使用$currentTime=date('h:i:s').

于 2013-06-10T16:34:47.340 回答
0

PHP 在服务器上运行;当浏览器正在执行 javascript 时(如果它执行 - 你永远无法确定) php 不再运行。在这种情况下,您可以使用其日期对象/函数将整个逻辑移至 php。有几种方法可以做到:

  • 如果您要将控制权传递给某些 php 代码(请求新页面或 AJAX 调用),则时间可以由 php 作为它必须执行的任何操作的一部分来计算,或者作为 GET 或 POST 参数传递给它。
  • 如果 t 变量只需要在屏幕上打印,主页可以在 php 端进行
于 2013-06-10T16:36:47.980 回答