如何在PHP中获取JavaScript变量值

时间:2012-03-20 15:01:27

标签: php javascript

我想要使用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>

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

10 个答案:

答案 0 :(得分:17)

您需要使用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

答案 1 :(得分:12)

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

<script>
var p1 = "success";
</script>

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

答案 2 :(得分:8)

使用您要访问的javascript变量添加Cookie。

document.cookie="profile_viewer_uid=1";

然后通过

在php中访问它
$profile_viewer_uid = $_COOKIE['profile_viewer_uid'];

答案 3 :(得分:6)

您可能想从学习Javascript和php开始。 Javascript是一种客户端脚本语言,运行在连接到php运行的Web服务器的客户端机器的浏览器中。这些语言无法直接与进行通信

根据您的目标,您需要向服务器发出AJAX获取或发布请求,并返回您需要的json / xml / html /响应,并将结果注入到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>

答案 4 :(得分:2)

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

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

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

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

答案 5 :(得分:2)

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

这可以轻松地更改或重新加载页面(例如提交表单或使用js进行重定向,如Chris answer中所示)。

但是,如果您不想重新加载页面,则必须使用AJAX,这完全是为了从网页访问Web服务器,而无需重新加载/更改页面。

一个简单的例子可以是:

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 :(得分:1)

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

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

答案 7 :(得分:1)

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

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

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

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

答案 8 :(得分:0)

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

答案 9 :(得分:-3)

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

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

在表单标记内。