如何在PHP中获得JavaScriptvariables值
我想要使用PHP访问的JavaScriptvariables的值。 我正在使用下面的代码,但它不会返回该variables在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>
当我回声它什么也没有显示。
您将需要使用JS发送URL中的variables,如: 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
这里是工作示例:在同一页面上获取javascriptvariables值。
<script> var p1 = "success"; </script> <?php echo "<script>document.writeln(p1);</script>"; ?>
你可能想从学习什么Javascript和PHP开始。 Javascript是一个客户端脚本语言,运行在连接到php运行的web服务器的客户机的浏览器中。 这些语言不能 直接通信。
根据您的目标,您需要向服务器发出一个AJAX get或post请求,并返回您需要的json / xml / html / whatever响应,并将结果返回到站点的DOM结构中。 我build议Jquery,BackboneJS或任何其他的JS框架。 有关示例,请参阅Jquery文档。
如果你必须在同一个站点上将JS数据传递给JS,那么你可以使用json_encode()将你的php数据转换成JS。
<script type="text/javascript> var foo = <?php echo json_encode($somePhpVar); ?> </script>
用你想访问的javascriptvariables添加一个cookie。
document.cookie="profile_viewer_uid=1";
然后访问它在PHP通过
$profile_viewer_uid = $_COOKIE['profile_viewer_uid'];
PHP在服务器上运行。 它输出一些文本。 然后停止运行。
文本被发送到客户端(浏览器)。 浏览器然后将文本解释为HTML和JavaScript。
如果您想从JavaScript获取数据到PHP,那么您需要创build一个新的HTTP请求并运行一个新的(或相同的)PHP脚本。
您可以使用表单或Ajax从JavaScript发出HTTP请求。
这是两种不同的语言,在不同的时间运行 – 你不能像这样与他们互动。
PHP在加载页面时在服务器上执行。 一旦加载,JavaScript将在浏览器中的客户端机器上执行。
这可能是一个棘手的问题,但安全的方法是设置一个javascript cookie,然后通过php cookievariables来获取它。然后将这个phpvariables分配给一个php会话,这个会话比cookie更安全地保存数据。然后删除cookie使用JavaScript和redirect页面本身。 鉴于你已经添加了一个PHP命令来捕捉variables,你会得到它。
如果你想在php脚本中使用jsvariables,你必须在HTTP请求中传递它。
这可以很容易地完成更改或重新加载页面(例如提交表单或使用jsredirect,如在克里斯回答 )。
但是,如果您不想重新加载页面,则必须使用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来做。
您需要将此值添加到提交给服务器的表单数据。 您可以使用
<input type="hidden" value="1" name="profile_viewer_uid" id="profile_viewer_uid">
在你的表单标签内。