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

14

我在 JavaScript 中有以下代码:

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

PHP代码:

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

注意:我不想将它作为表单提交。我有一些 JavaScript 逻辑,我想在同一个 PHP 页面上使用它...请告诉我如何做到这一点。

注意:我不希望以表单提交的形式呈现。我在JavaScript中编写了一些逻辑,希望能在同一页的PHP页面上使用它...请告知如何实现。

5
您需要将变量传输到服务器,请查看 AJAX 来实现此目的。 - Sirko
@Sirko:我不想使用AJAX,因为我希望这些JavaScript和PHP在后端调度程序页面中。它不能在前端页面中访问。 - logan
@Sirko:或者说,能否将<div>的值存储在PHP变量中? - logan
1
@logan Ajax只是一种用于客户端和服务器之间异步HTTP通信的技术,无论在哪里使用它都可以。JavaScript运行在客户端(例如浏览器)上,而PHP运行在服务器端 - 如果它们想要相互通信,就需要建立一个连接。您可以通过使用URL参数重新加载页面(同步),或者使用JavaScript在后台发出请求(异步),并将结果注入到DOM中,例如在<div>中来实现这一点。 - Quasdunk
1
@logan 你可以通过AJAX发送任何数据。在你的情况下,看起来你应该序列化那个div的所有必要信息,然后使用AJAX发送它。 - Sirko
8个回答

24

请记住,如果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的PHP变量,值为字符串 'foo'
  2. 输出$a的值,以某些JavaScript的上下文方式呈现(当前未执行)
  3. 使用PHP的$a进行更多操作
  4. 将所有输出内容,包括带有变量赋值的JS,发送到浏览器。

按照原样编写,将会向浏览器发送以下内容进行执行(我删除了JS注释以增加清晰度):

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

只有在这种情况下,JS才会开始执行,并将其自己的变量a设置为"foo"(此时PHP无效)。

换句话说,如果两者都存在于同一文档中,并且没有与服务器的额外交互,则JS无法对PHP造成任何影响。此外,PHP对JS的影响仅限于能够在JS上下文中输出一些JS或其他内容。


@JAAulde所说的一切都是完全正确的。我想要补充的是,也许误解在于这段代码运行的位置。PHP代码正在您的Web服务器上运行,并返回平面HTML / JavaScript到浏览器。然后浏览器运行您的JavaScript。这就是为什么JAAulde一直说PHP将首先运行的原因。您不能拥有一个变量,JavaScript和PHP都“知道”,它们正在完全分离的机器上运行。 - xbakesx
你可以通过让PHP编写JavaScript来传递信息,或者通过网络调用(AJAX /表单提交等)从JavaScript传递数据到PHP。 - xbakesx

20
<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> 

2
你的解决方案似乎非常不同。从未听说过这种奇怪的任务。但是由于这个,我还是得到了输出。 - Ganesh Babu
需要我提供其他帮助吗? - Chetan Ghadiya
2
是的,您仍然可以将Javascript变量分配给php。但是JS仅在页面末尾加载。我该如何解决这个问题:我需要根据js变量使用if条件。但是js只在最后加载。因此,if条件不会按预期工作。 - Ganesh Babu
1
嗨,兄弟...实际上PHP变量存储了<script>document.write(a)</script>你好 - Chetan Ghadiya
你好,Ganesh,你在吗? - Chetan Ghadiya
显示剩余2条评论

4

最理想的方法是通过AJAX调用传递数据,但如果需要快速且简单的方法,您只需在$_GET参数中重新加载页面即可包含此变量 -

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

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

<?php 
  $variable = $_GET['a'];
?>

或者说,能否将<div>的值存储在Php变量中? - logan
1
当然可以 - 你只需将JavaScript变量设置为 document.getElementById('the_divs_id').innerHTML - Lix
1
我刚刚尝试了你的代码片段,它陷入了无限循环。 - Shantesh

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

这与表单无关... 这里涉及到脚本逻辑,我想要它的输出结果。 - logan

0

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


或者一个GET请求,为了完整起见,AJAX可以是GET或POST。 - axel.michel

0

在你的看法中:

  <?php $value = '<p id="course_id"></p>';?>

JavaScript 代码:

  var course = document.getElementById("courses").value;
  
 document.getElementById("course_id").innerHTML = course;

0

您可以使用AJAX解决此问题。您不需要加载JQuery来进行AJAX,但它比本地JS具有更好的错误和成功处理。

我会这样做:

1)将单击事件侦听器添加到页面上所有的锚点。 2)单击后,您可以设置一个ajax请求到您的php,在POST-DATA中设置锚点id或文本值 3)php获取该值,您可以设置一个请求到您的数据库。然后返回您需要的值并将其回显到ajax请求中。 4)您的ajax请求的成功函数正在执行一些操作

有关ajax请求的更多信息,请在此处查看:

-> Ajax-Request NATIVE https://blog.garstasio.com/you-dont-need-jquery/ajax/

一个简单的JQuery示例:

$("button").click(function(){
  $.ajax({url: "demo_test.txt", success: function(result){
    $("#div1").html(result);
  }});
});

-1

JavaScript变量 = PHP变量,请尝试如下:

<script>
var a="Hello";
<?php
$variable='a';
?>
</script>

注意:它只能在 script 标签下运行 PHP 代码。我已经成功地初始化了 PHP 变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接