如何将 JavaScript 变量输出存储到 PHP 变量中?

IT技术 php javascript html
2021-03-11 00:43:42

我在 JavaScript 中有以下代码:

<script>
var a="Hello";
</script>

PHP代码:-

<?php 
$variable = // I want the above JavaScript variable 'a' value to be stored here
?>

注意:我不想在表单提交中使用它。我在 JavaScript 中有一些逻辑,我想在同一个 PHP 页面中使用它...请让我知道如何做到这一点。

6个回答

你必须记住,如果 JS 和 PHP 存在于同一个文档中,PHP 将首先执行(在服务器上),而 JS 将第二次执行(在浏览器上)——两者永远不会交互(除了你用 PHP 输出 JS,这并不是真正的两个引擎之间的交互)。

考虑到这一点,您最接近的是在您的 JS 中使用 PHP 变量:

<?php
$a = 'foo'; // $a now holds PHP string foo
?>
<script>
    var a = '<?php echo $a; ?>'; //outputting string foo in context of JS
                                 //must wrap in quotes so that it is still string foo when JS does execute
                                 //when this DOES execute in the browser, PHP will have already completed all processing and exited
</script>
<?php
//do something else with $a
//JS still hasn't executed at this point
?>

正如我所说,在这种情况下,PHP(全部)首先在服务器上执行,导致:

  1. $a要创建为字符串 'foo'的 PHP 变量
  2. $a要在某些 JavaScript 的上下文中输出的值(当前未执行)
  3. 用 PHP 完成更多 $a
  4. 所有输出,包括带有 var 赋值的 JS,都被发送到浏览器。

正如所写,这会导致以下内容被发送到浏览器以执行(为了清楚起见,我删除了 JS 注释):

<script>
    var a = 'foo';
</script>

然后,并且只有在那时,JS 才会开始执行,并将其自己的变量a设置为“foo”(此时 PHP 不在画面中)。

换句话说,如果两者生活在同一个文档中并且没有与服务器进行额外的交互,那么 JS 就不会对 PHP 产生任何影响。此外,PHP 对 JS 的影响仅限于输出一些 JS 或 JS 上下文中的东西的简单能力。

@JAAulde 所说的一切都是完全正确的。我想补充一点的是,也许是误解是哪里该代码运行。PHP 代码正在您的网络服务器上运行,并将平面 html/javascript 返回到浏览器。然后浏览器正在运行您的 javascript。这就是 JAAulde 一直说 PHP 将首先运行的原因。你不能有一个 javascript 和 PHP 都“知道”的变量,它们在完全独立的机器上运行。
2021-04-29 00:43:42
您可以通过让 PHP 写出 javascript 来将信息从 PHP 传递到 javascript,或者通过网络调用(AJAX/表单提交等)将数据从 javascript 传递到 PHP
2021-05-13 00:43:42
<html> 
<head>
    <script>
        var a="Hello";
    </script>

</head> 

<body> 
    <?php 
        echo $variable = "<script>document.write(a)</script>"; //I want above javascript variable 'a' value to be store here
    ?>
</body> 

需要我这边的任何其他帮助吗?
2021-04-25 00:43:42
嗨,ganesh,你在吗?
2021-04-30 00:43:42
是的。您仍然可以为 php 分配一个 Javascript 变量。但 JS 仅在页面末尾加载。我如何工作:我需要使用基于 js 变量的 if 条件。但是js最后才加载。所以如果条件没有按预期工作
2021-05-01 00:43:42
嗨兄弟.. 实际上是 php 变量存储 <script> document.write(a) </script> 你好
2021-05-16 00:43:42
你的解决方案似乎完全不同。没​​有听说过这个奇怪的任务。但我仍然因为这个得到了输出
2021-05-20 00:43:42

理想的方法是通过 AJAX 调用传递它,但对于快速而肮脏的方法,您所要做的就是在$_GET参数中使用此变量重新加载页面-

<script>
  var a="Hello";
  window.location.href = window.location.href+'?a='+a;
</script>

您的页面将重新加载,现在在您的 PHP 中,您将可以访问该$_GET['a']变量。

<?php 
  $variable = $_GET['a'];
?>
或者是否可以在 Php 变量中存储 <div> 值?
2021-05-02 00:43:42
当然 - 你只需将你的 JavaScript 变量设置为 document.getElementById('the_divs_id').innerHTML
2021-05-11 00:43:42
我刚刚试过你的代码片段,它在无限循环中运行
2021-05-19 00:43:42

如果这与表单提交有关,请在表单内使用隐藏输入并将隐藏输入值更改为该变量值。然后您可以在 php 页面中获取隐藏的输入值,并在提交表单后将其分配给您的 php 变量。

更新:

根据您的编辑,您似乎不了解 javascript 和 php 的工作原理。Javascript 是一种客户端语言,而 php 是一种服务器端语言。因此,当您在服务器中执行相关页面时,您无法执行 javascript 逻辑并将该变量值用于 php 变量。客户端浏览器处理完从Web服务器返回的网页(已经执行了相关页面的php代码)后,您可以运行相关的javascript逻辑。执行完javascript代码并将相关值分配给相关javascript变量后,您可以使用表单提交或ajax发送该javascript变量值以供另一个php页面使用(或处理并获取相同php页面的请求) )。

它与表单无关......有脚本逻辑,我想要它的输出
2021-05-16 00:43:42

你真的不能。PHP 在服务器上生成,然后发送到浏览器,在那里 JS 开始做它的事情。所以,无论页面上的 JS 发生了什么,PHP 都不知道,因为它已经完成了。@manjula 是正确的,如果您希望发生这种情况,则必须使用 POST 或 ajax。

或者一个GET请求,要完整,AJAX可以是GET或POST。
2021-04-27 00:43:42