在DOM加载后更改PHP变量,会有变化吗?

时间:2014-07-22 01:03:01

标签: javascript php html ajax

我被一位朋友问了一个问题而我老实说,因为我的生活无法得出一个肯定的答案。所以我把它给你了;

如果我有2个文件(page.html和form.php),我在page.html中包含了form.php,如下所示:

<html>
   <head>
      <title>Home</title>
      <?php include 'form.php'; ?>
   </head>
   <body>
      <form>
        <FORM CONTENT HERE>

      </form>

      <div class="results">
      <p><?php echo $result_variable ?></p>
      </div>
   </body>
 <script>
    !-- Ajax function here, POSTs to form.php
 </script>

</html>

其中有一个AJAX表单,POST到form.php,以及一个结果字段,用于打印PHP变量$ result_variable。

现在,如果我的PHP页面获取了已发布的数据,则在初始文档加载/包含完成后 - 然后更改$ result_variable的值 - 将在page.html中更新$ result_variable的值而不使用页面重装?

例如 - 如果form.php看起来像这样;

<?php
$result_variable = 1;

if (!empty($_POST)){
$result_variable = 2;
}

?>

在初始页面加载(没有表单提交)之后,$ result_variable应该是1。虽然在ajax表单提交完成后,$ result_variable已经更改为2.这是否反映了没有重新加载page.html?

感谢。

1 个答案:

答案 0 :(得分:3)

不。因为$result_variable不是当前页面的一部分,包括form.php。

只有使用javascript填充它才会有效。

让我们说:

ajax的目标是form.php,所以这就是form.php的样子:

<?php

  $result_variable = 1;

  if(!empty($_POST)){
    $result_variable = 2;
  }

  // print the result as an ajax response (the format here is not JSON)
  echo $result_variable;

  // if the response format is JSON
  echo json_encode(array("result_key_name" => $result_variable));
?> 

以下是使用jQuery $.post http://api.jquery.com/jquery.post/

的示例
// on a normal php/html page
$.post("form.php", form_data, function(data){
   // data is the result echoed using json_encode() from form.php
   alert(data.result_key_name); // as per the server-side example above
}, "json");