我被一位朋友问了一个问题而我老实说,因为我的生活无法得出一个肯定的答案。所以我把它给你了;
如果我有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?
感谢。
答案 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");