我正在使用ajax和php构建登录名。我的代码工作得很好,直到我在 php 代码中调用另一个类。 当我染色我的 php 代码时,我得到 int 甚至放了一个var_dump。你可以在我的 PHP 代码中看到我已经注释掉了它,因为我想真的这样做
视图:
<body>
<p> </p>
<div id="content">
<h1>Login Form</h1>
<form id="form1" name="form1" action="stack.php" method="post">
<p>
<label for="username">Username: </label>
<input type="text" name="username" id="username" />
</p>
<p>
<label for="password">Password: </label>
<input type="password" name="password" id="password" />
</p>
<p>
<input type="button" id="login" name="login" value="submit"/>
</p>
</form>
<div id="message"></div>
</div>
<script type="text/javascript">
$(document).ready(function(){
$("#login").click(function(){
var action = $("#form1").attr('action');
var form_data = {
username: $("#username").val(),
password: $("#password").val(),
is_ajax: 1
};
$.ajax({
type: 'POST',
url: action,
data: form_data,
success: function(data){
if(typeof(data) != 'undefined' && (data == 'success' || data == 'error')){
if(data == 'success'){
$("#form1").slideUp('slow', function() {
$("#message").html("<p class='success'>You have logged in
successfully!</p>");
});
} else if(data == 'error'){
$("#form1").slideUp('slow', function() {
$("#message").html("<p class='error'>Invalid username and/or
password.</p>");
});
}
} else {
console.log("här");
console.log(data);
$("#message").html("<p class='error'>Error to connect to server</p>");
}
}
});
return false;
});
});
</script>
</body>
</html>
.PHP:
class DologinHandler{
public function Login(){
if(isset($_REQUEST['is_ajax']))
{
$username = $_REQUEST['username'];
$password = $_REQUEST['password'];
// $UserHandler = new UserHandler();
//$UserHandler -> controllDB($username,$password);
if($username == 'demo' && $password == 'demo')
{
exit('success');
} else {
exit('error');
}
}
}
}
?>
如果你帖子中的代码是你写的所有PHP代码,它不会做任何事情。如果您的客户端期望"成功"或"错误",则它获得空字符串的事实可能是您收到错误消息的原因。
在 PHP 中,当您声明一个类时,代码仅在实例化该类时执行。你可以通过将Waygood在他的答案中写的两行代码添加到堆栈文件的底部来做到这一点.php。
<?php
/* All your PHP code */
$loginclass=new DologinHandler();
$loginclass->Login();
而且,为了好的做法,如果没有附加到上面编写的代码中的内容,请删除底部的?>
,这可以为您省去很多麻烦。不过与这个问题无关。
试试
echo 'success';
return true;
而不是
exit('success');
同样在函数结束时,您应该处理非 AJAX 登录
堆栈.php应该是这样的:-
$loginclass=new DologinHandler();
$loginclass->Login();