我正在尝试使用AJAX处理登录表单。运行php url并且用户登录但是AJAX调用的success子句不会运行也不会完成。当我在函数中放置断点时,它在调试时不会中断。为什么php成功但成功甚至没有运行?
JQUERY AJAX
$(document).ready(function (){
$('#login-button').click(function(){
var dbg = $('#auth-form').serialize()+'&action=login';
$.ajax({
url: 'auth.php',
data: $('#auth-form').serialize()+'&action=login',
type: "POST",
dataType: "json",
success: function(data) {
console.log(data);
$("#login-message").html("test");
if(data['auth'] == 'valid'){
$("#login-message").html(data['msg']);
//setTimeout(redirect(), 2000);
}else if(data['auth'] == 'invalid'){
$("#login-message").html(data['msg']);
}
},
complete: function(data){
var d = $.parseJSON(data);
console.log(d);
}
});
return e.preventDefault();
});
});
PHP
<?php
session_start();
require_once("model.php");
$model = new model();
extract($_POST);
var_dump($_POST);
if(isset($action))
{
if($action == 'login'){
if($model->authenticate($id, $password)){
//run authenticate function to authenticate user in db
$_SESSION['id']=$id;
$return["auth"]="valid";
$return["msg"]="<font color='green'>You have successfully logged in.\r\n You are being redirected...</font>";
//redirect to new page
echo json_encode($return);
}else{
//login incorrect
$return["auth"]="invalid";
$return["msg"]="<font color='red'>ID or Password incorrect</font>";
echo json_encode($return);
}
}else if($action == 'logout'){
}
}
代码完成后,登录表单变为空,页面保持静态。我尝试在AJAX中填充div,以便用户在登录时不会,然后计划运行重定向。
答案 0 :(得分:0)
您必须返回json,因为您的dataType是json,否则成功不会触发。
您需要在php脚本中添加标题。 例如:
header("Content-type: application/json");