如何在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"> 

在你的表单标签内。