所以我需要在同一个index.php文件中的PHP代码中使用JavaScript变量。 我正在使用jquery Post(),将变量发送到一个单独的php文件,然后将变量保存为全局变量,因此我可以在索引文件中使用它。问题是变量没有被保存,我无法正确打印任何php输出。
这是我的index.php文件:
<script>
var nameToSend = 'foo fighters';
var request = $.post( "../getuser.php", { name: nameToSend } );
</script>
<div>
<?php
echo 'name: '; echo $GLOBALS['name'];
?>
</div>
getuser.php
global $name;
$name = $_POST["name"];
变量名称不会在屏幕上打印,我在索引文件中再次访问它的唯一方法是使用变量&#39; msg&#39;由post函数返回,但随后又在javascript中,我需要在PHP中使用它。 谢谢!
答案 0 :(得分:1)
index.php
。更具体一点:连接到http://myserver.com/index.php时,index.php中的代码由PHP解释器执行,结果将发送到浏览器。你不能再玩它了。
技术上就像是:
$GLOBALS['name']
为空,所以不会打印任何内容。index.php此时已经死了,此处不再执行了。例如,当您重新加载页面时,它会重新开始,就像您第一次连接它一样,之前设置的变量都已消失。
第二点重要的是,所有的php文件都是自己工作的,所以当你从getuser.php
设置变量时,它不会在index.php
中设置,反之亦然。
您可以使用会话来共享php文件中的变量,但这不是您想要的特定情况,因为服务器执行php并在将输出发送到浏览器后关闭连接,您无法再在{{{ 1}}。
所以正确的做法是:
<强>的index.php:强>
index.php
<强> getuser.php:强>
<script>
var nameToSend = 'foo fighters';
var request = $.post( "../getuser.php", { name: nameToSend }, function(response) {
$('#response-div').html(response);
});
</script>
<div id="response-div"></div>
所以你必须在$name = $_POST["name"];
echo "Hello $name";
(不是getuser.php
)内进行计算,并使用javascript将index.php
生成的输出放到正确的位置。