正如上面 Jonathan Lonowski 所解释的,当点击 log in / signup 按钮时,表单会将数据发布到 action= 属性中提到的页面.由于该属性在您的表单标签中为空,因此它将重新加载同一页面,并将数据发布到自身。
数据将以key=value 变量对的形式到达。变量值将是字段的内容,变量名将是元素上name="" 属性的值。
例如,对于这个字段:
<input id="fname" name="first" value="Bobby" />
数据会这样接收:
$fn = $_POST['first']; //value is Bobby, or whatever user enters
在包含表单的页面上,在顶部添加一个部分,如下所示:
<?php
if (isset($_POST['fname']) == true){
$fn = $_POST['fname'];
echo "Received First Name: " . $fn;
die();
}else{
?>
//Your current page, in its entirety, goes here
<?php
} //close the PHP if statement
?>
这就是处理普通 HTML <form> 构造的方式。
但是,如果您希望使用 AJAX 与 PHP 文件进行通信而不更改页面,那么:
(1) 无需使用<form> 构造,只需使用带有输入按钮的DIV:<input type="button" id="sub_btn" value="Submit" />
(2) 使用标准 js/jQuery 捕获按钮按下:
$('sub_btn').click(function(){
var fn = $('#first').val();
//etc.
$.ajax(function(){
type: 'post',
url: 'my_php_processing_file.php',
data: 'fname=' +fn+ '&lname=' etc
});
});
在您的 PHP 处理器文件中,数据将被这样接收:
<?php
$fn = $_POST['fname'];
$ln = $_POST['lname'];
//Do your MySQL lookup here...
echo 'Received ' .$fn. ' ' .$ln;
(3) 如果你确实使用了表单结构,你仍然可以像上面那样做所有事情,但是你需要禁止默认表单操作导航到action=中指定的页面属性(action="" 的属性设置会将数据发布到您所在的同一页面并重新加载)。
要禁止导航到action= 中指定的页面(涉及页面刷新,即使只是action=""),请使用event.preventDefault(),如下所示:
$('#buttonID').click(function(event){
event.preventDefault();
//remainder of button click code goes here
});