提问人:rash111 提问时间:3/20/2012 最后编辑:Brett DeWoodyrash111 更新时间:3/26/2021 访问量:354875
如何在PHP中获取JavaScript变量值
How to get JavaScript variable value in PHP
问:
我想要 JavaScript 变量的值,我可以使用 PHP 访问它。 我正在使用下面的代码,但它没有在 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 在服务器上运行。它输出一些文本。然后它停止运行。
文本将发送到客户端(浏览器)。然后,浏览器将文本解释为 HTML 和 JavaScript。
如果你想从JavaScript获取数据到PHP,那么你需要发出一个新的HTTP请求并运行一个新的(或相同的)PHP脚本。
您可以使用表单或 Ajax 从 JavaScript 发出 HTTP 请求。
这是两种不同的语言,它们在不同的时间运行 - 你不能像那样与它们交互。
PHP 在页面加载时在服务器上执行。加载后,JavaScript 将在浏览器中的客户端计算机上执行。
您可能想从学习 Javascript 和 php 开始。Javascript 是一种客户端脚本语言,运行在连接到运行 php 的 Web 服务器的客户端计算机的浏览器中。这些语言不能直接交流。
根据你的目标,你需要向服务器发出一个AJAX get或post请求,并返回一个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>
评论
您需要使用 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
评论
您需要将此值添加到提交到服务器的表单数据中。你可以使用
<input type="hidden" value="1" name="profile_viewer_uid" id="profile_viewer_uid">
在表单标记中。
评论
input
下面是工作示例:在同一页面上获取 javascript 变量值。
<script>
var p1 = "success";
</script>
<?php
echo "<script>document.writeln(p1);</script>";
?>
评论
这可能是一件有点棘手的事情,但安全的方法是设置一个 javascript cookie,然后通过 php cookie 变量获取它。然后,将此 php 变量分配给 php 会话,该会话将比 cookie 更安全地保存数据。然后使用 javascript 删除 cookie 并将页面重定向到自身。 假设您已经添加了一个 php 命令来捕获变量,您将得到它。
添加一个包含您要访问的 javascript 变量的 cookie。
document.cookie="profile_viewer_uid=1";
然后通过 php 访问它
$profile_viewer_uid = $_COOKIE['profile_viewer_uid'];
如果你想在 php 脚本中使用 js 变量,你必须在 HTTP 请求中传递它。
基本上有两种方法:
一个基本示例可以是:
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中做到这一点。
评论
在您的 html 表单中创建一个隐藏字段
<input type="hidden" id="scanCode" name="SCANCODE"></input>
然后在您的 javascript 中通过添加来更新字段值;
document.getElementById("scanCode").setAttribute('value', scanCode);
评论