【问题标题】:How to get JavaScript variable value in PHP如何在 PHP 中获取 JavaScript 变量值
【发布时间】:2012-04-05 01:35:51
【问题描述】:

我想要我可以使用 PHP 访问的 JavaScript 变量的值。 我正在使用下面的代码,但它不会在 PHP 中返回该变量的值。

// set global variable in javascript
    profile_viewer_uid = 1;

// php code

$profile_viewer_uid=$_POST['profile_viewer_uid']; 

这给了我以下错误:-

A PHP Error was encountered
Severity: Notice
Message: Undefined index: profile_viewer_uid

我使用的另一个 php 代码给出了空值

$profile_viewer_uid = "<script language=javascript>document.write(profile_viewer_uid);</script>

当我回显时,它什么也没显示。

【问题讨论】:

标签: php javascript


【解决方案1】:

您将需要使用 JS 将带有变量的 URL 发回,例如: http://www.site.com/index.php?uid=1

通过在 JS 中使用类似的东西:

window.location.href=”index.php?uid=1";

然后在 PHP 代码中使用 $_GET:

$somevar = $_GET["uid"]; //puts the uid varialbe into $somevar

【讨论】:

  • 尽管在那个 window.location 上,您希望将“1”替换为一些引用所需变量值的代码。
  • 在没有重定向的情况下是否可行
  • 我怀疑 index.php 是我们可以放在那里的任意名称,还是我们可以进行调用之前需要存在的文件,或者它是文件的名称我们正在编写这段代码本身? (假设我在同一个文件中同时编写 html 和 php)
  • 你能用帖子而不是获取请求来做到这一点吗?
【解决方案2】:

使用您要访问的 javascript 变量添加一个 cookie。

document.cookie="profile_viewer_uid=1";

然后通过 php 访问它

$profile_viewer_uid = $_COOKIE['profile_viewer_uid'];

【讨论】:

    【解决方案3】:

    这是工作示例:在同一页面上获取 javascript 变量值。

    <script>
    var p1 = "success";
    </script>
    
    <?php
    echo "<script>document.writeln(p1);</script>";
    ?>
    

    【讨论】:

    • 这段代码NOT将变量从js传递到PHP:它只是添加了一个js脚本,在页面中输出变量。
    • 这就是我们真正想要的,无需刷新页面... :)
    • 我明白你的意思,但这可以在纯 html/js 中完成。将其包装在 php echo 脚本中只是“无用”开销,因为您的 php(运行服务器端的脚本)仍然不知道变量值。
    • 我同意你的看法......但这是一种罕见的情况,我们需要先在 js 中计算一些值,然后需要在 php 中处理该值......我已经走了通过那个场景,所以这个方法解决了我的问题......
    • 问题是你不能用php处理这个变量。当 php 正在处理这个文件(服务器端)时,js 变量还没有设置。 Js 变量设置在客户端,当 php 已经运行并且不能再交互时,除非您执行另一个 http 请求(例如使用ajax)。
    【解决方案4】:

    您可能想从了解 Javascript 和 php 是什么开始。 Javascript 是一种客户端脚本语言,在客户端机器的浏览器中运行,该客户端机器连接到运行php 的网络服务器。这些语言不能直接交流

    根据您的目标,您需要向服务器发出AJAX get 或 post 请求,并返回您需要的 json/xml/html/whatever 响应,并将结果注入网站的 DOM 结构中。我为此建议使用 Jquery、BackboneJS 或任何其他 JS 框架。 See the Jquery documentation for examples.

    如果您必须在同一站点上将 php 数据传递给 JS,您可以将数据作为 JS 回显,并使用 json_encode() 将您的 php 数据转换为 JS。

    <script type="text/javascript>
        var foo = <?php echo json_encode($somePhpVar); ?>
    </script>
    

    【讨论】:

    • 您确实意识到“无法交流”是一种夸大其词的说法,尤其是当您的下一句话谈到如何让他们交流时。 :)
    【解决方案5】:

    如果您想在 php 脚本中使用 js 变量,您必须在 HTTP 请求中传递它。

    基本上有两种方式:

    • 提交或重新加载页面(根据Chris answer)。
    • 使用AJAX,专门用于在网页 (js) 和服务器 (php) 之间进行通信,而无需重新加载/更改页面。

    一个基本的例子可以是:

    var profile_viewer_uid = 1;
    $.ajax({
      url: "serverScript.php",
      method: "POST",
      data: { "profile_viewer_uid": profile_viewer_uid }
    })
    

    serverScript.php 文件中,你可以这样做:

     $profile_viewer_uid = $_POST['profile_viewer_uid'];
     echo($profile_viewer_uid);
     // prints 1
    

    注意:在这个例子中我使用了jQuery AJAX,它实现起来更快。纯js也可以。

    【讨论】:

      【解决方案6】:

      PHP 在服务器上运行。它输出一些文本。然后它停止运行。

      文本被发送到客户端(浏览器)。然后浏览器将文本解释为 HTML 和 JavaScript。

      如果您想从 JavaScript 获取数据到 PHP,那么您需要发出一个新的 HTTP 请求并运行一个新的(或相同的)PHP 脚本。

      您可以使用表单或 Ajax 从 JavaScript 发出 HTTP 请求。

      【讨论】:

        【解决方案7】:

        这是两种不同的语言,在不同的时间运行 - 你不能像那样与它们互动。

        当页面加载时,PHP 在服务器上执行。加载后,JavaScript 将在浏览器中的客户端计算机上执行。

        【讨论】:

          【解决方案8】:

          在您的 html 表单中创建一个隐藏字段

          <input type="hidden" id="scanCode" name="SCANCODE"></input>
          

          然后在您的 javascript 中通过添加更新字段值;

          document.getElementById("scanCode").setAttribute('value', scanCode);
          

          【讨论】:

            【解决方案9】:

            这可能有点棘手,但安全的方法是设置一个 javascript cookie,然后通过 php cookie 变量获取它。然后将此 php 变量分配给一个 php 会话,该会话将比 cookie 更安全地保存数据。然后使用 javascript 删除 cookie 并将页面重定向到自身。 假设你已经添加了一个 php 命令来捕获变量,你就会得到它。

            【讨论】:

              【解决方案10】:

              您需要将此值添加到提交给服务器的表单数据中。你可以使用

              <input type="hidden" value="1" name="profile_viewer_uid" id="profile_viewer_uid">
              

              在您的表单标签内。

              【讨论】:

              • 为什么有这么多反对票?使用 JavaScript 更改input 的值,然后使用 JavaScript 提交表单?它有效,并回答了问题!
              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 2016-02-26
              • 2013-09-02
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多