jQuery Ajax成功功能无法正常工作

时间:2011-10-27 08:31:35

标签: php jquery ajax

我有这个非常简单的登录表单,包含用户和pass,我需要检查两者是否在数据库中,并且我正在使用ajax:

$("#clientes").bind("submit", function() {
    $(".error_usu").hide();
    $.ajax({
        type        : "POST",
        cache       : false,
        url         : "login.php",
        data        : $(this).serializeArray(),
        success: function(data) {
            switch(data){
                case '1'://exito
                    alert("alert!");
                    window.location.href = "clientes.php";
                break;
                case '2'://pass
                    $(".error_pass").show();
                break;
            }
        }
    });

    return false;
});     

在login.php里面我有这个:

 <? session_start();
 if(!empty($_POST['usuario']) && !empty($_POST['password']))
 {
include "funciones.php";
$username = $_POST['usuario'];
    $password = $_POST['password'];
$con=conectar();
$checklogin = mysql_query("SELECT * FROM clientes WHERE user = '".$username."' AND pass = '".$password."'",$con) or die (mysql_error());

if(mysql_num_rows($checklogin) == 1){
    $_SESSION['usuario'] = $_POST['usuario'];
    $_SESSION['password'] = $_POST['password'];
    echo '1';
}else{
    echo '2';
}

 }else{
     echo '2';
 }?>

当我用萤火虫检查时,我看到我得到了1或2但是de success功能永远不会起作用!我尝试过这个之前,我在数据库中只是在login.php中检查这个方式并且它有效:

if($_POST['usuario']=="fulano" && $_POST['password']=="fulano"){
    echo '1';
}

由于$ _SESSION变量,它无法正常工作吗?我不完全理解ajax函数是如何工作的。

3 个答案:

答案 0 :(得分:3)

如果没有输入switch语句,你可以将响应乘以1,然后JavaScript将其设为数字​​而不是文本。

success: function(data) {
        data *= 1;
        switch(data){

success: function(data) {
        data = parseInt(data);
        switch(data){

答案 1 :(得分:2)

您是否尝试指定要使用的正确数据类型?

例如:

   type:       "POST",
   dataType:   "text",

只是为了确保你可以添加:

error:      function(err){alert("Errror:"+err.toString());},

并查看是否返回错误,如果是,则错误字符串是什么。

如果你的成功方法被击中,你也可以试试这个:

success: function(data) {alert(data==1); alert(data=='1'); }

答案 2 :(得分:2)

您可以尝试通过在ajax调用中实现错误处理程序来捕获响应。您还可以尝试设置您希望接收的dataType。它看起来像这样:

en$.ajax({
    type        : "POST",
    cache       : false,
    url         : "login.php",
    data        : $(this).serializeArray(),
    dataType    : "text",
    error       : function(jqXHR, textStatus, errorThrown) {
         //Look at the values of jqXHR, textStatus, errorThrown
    },
    success: function(data) {
        switch(data){
            case '1'://exito
                alert("alert!");
                window.location.href = "clientes.php";
            break;
            case '2'://pass
                $(".error_pass").show();
            break;
        }
    }
});