14

我在 JavaScript 中有以下代码:

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

PHP代码: -

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

注意:我不希望它在表单提交中。我在 JavaScript 中有一些逻辑,我想在同一个 PHP 页面中使用它......请让我知道我该怎么做。

4

8 回答 8

22

你必须记住,如果 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 或某些东西的简单能力。

于 2013-02-02T14:49:02.007 回答
19
<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> 

于 2014-05-09T11:44:06.607 回答
4

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

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

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

<?php 
  $variable = $_GET['a'];
?>
于 2013-02-02T14:42:14.310 回答
1

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

更新:

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

于 2013-02-02T14:38:23.930 回答
0

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

于 2013-02-02T14:42:45.470 回答
0

JavaScript 变量 = PHP 变量尝试如下:-

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

注意:-它仅在您在脚本标记下执行 php 代码时运行。我有一个成功初始化 php 变量。

于 2018-07-24T19:42:34.507 回答
0

您可以使用 AJAX 解决此问题。您不需要为 AJAX 加载 JQuery,但它比原生 JS 具有更好的错误和成功处理能力。

我会这样做:

1)为页面上的所有锚点添加一个点击事件监听器。2)点击时,您可以为您的php设置一个ajax请求,在您设置锚ID或文本值的POST-DATA 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);
  }});
});
于 2019-12-13T10:36:58.037 回答
0

在你看来:

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

javascript代码:

  var course = document.getElementById("courses").value;
  
 document.getElementById("course_id").innerHTML = course;
于 2020-10-19T12:59:41.157 回答