JQuery post() - 用PHP

时间:2015-11-03 22:31:10

标签: javascript php jquery

所以我需要在同一个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中使用它。 谢谢!

1 个答案:

答案 0 :(得分:1)

仅在您请求时才会呈现并执行

index.php。更具体一点:连接到http://myserver.com/index.php时,index.php中的代码由PHP解释器执行,结果将发送到浏览器。你不能再玩它了。

技术上就像是:

  • 浏览器打开与myserver.com的连接,并要求服务器执行index.php
  • 服务器执行index.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生成的输出放到正确的位置。