我想要可以使用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">
在表单标签内。