如何在PHP中获取JavaScript变量值


How to get JavaScript variable value in PHP

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

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

添加一个带有要访问的javascript变量的cookie。

document.cookie="profile_viewer_uid=1";

然后通过在php中访问

$profile_viewer_uid = $_COOKIE['profile_viewer_uid'];

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

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

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

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

根据您的目标,您需要向服务器发出AJAX获取或发布请求,并返回json/xml/html/所需的任何响应,然后将结果注入网站的DOM结构中。我建议使用Jquery、BackboneJS或任何其他JS框架。有关示例,请参阅Jquery文档。

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

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

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

基本上有两种方式:

  • 提交或重新加载页面(根据Chris的回答)
  • 使用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

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

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

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

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

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

这是两种不同的语言,在不同的时间运行——你不能这样与它们交互。

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

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

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

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

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

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

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

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

在表单标签内。