AJAX json成功但成功并没有成功

时间:2014-09-11 21:32:09

标签: php jquery ajax json

我正在尝试使用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,以便用户在登录时不会,然后计划运行重定向。

1 个答案:

答案 0 :(得分:0)

您必须返回json,因为您的dataType是json,否则成功不会触发。

您需要在php脚本中添加标题。 例如:

header("Content-type: application/json");