我的$ .ajax成功回调没有在Jquery中执行的任何原因?

时间:2011-01-17 09:50:05

标签: jquery

今天我发现我的网站开发版本没有执行成功回调,但所有其他javascript和jquery代码运行良好。甚至我的ajax请求都已执行,我可以在firebug中看到响应。

$('#login').submit(function(){
    var email = $('#l_email').val();
    var pass = $('#l_pass').val();
    if(email && pass != ''){
        var str = decodeURIComponent($(this).serialize());
        $.ajax({
            type: "POST",
            url: "login.php",
            data: str,
            success: function(msg){
                if(msg == 'OK'){
                    window.location = 'index.php'
                }else if (msg == 'NOT_OK'){
                    if(lang == 'lv'){
                        alert(message);
                    }else if(lang == 'ru'){
                        alert(message);
                    }
                }else if (msg == 'EMAIL_NOT_VALID'){
                    if(lang == 'lv'){
                        alert(message);
                    }else if(lang == 'ru'){
                        alert(message);
                    }      
                }
            }
         });
    }else{
        alert('That form is empty.');
    }
    return false;
});

事情是$ .ajax部分执行正常,我可以在firebug中看到响应“OK”。但重定向没有发生,即使我用alert或console.log之类的东西替换重定向也没有出现。

是什么导致这个?由于firebug没有错误,所以很难跟踪。

已解决: 建议使用Reigel,在$ .trim()中包含成功回调数据;

1 个答案:

答案 0 :(得分:0)

如何在成功函数的代码中添加else { alert('No match for msg'); }块,或许您会发现msg与您的任何IF语句都不匹配。

jQuery doc表示成功函数的签名应该是:success(data, textStatus, XMLHttpRequest)所以我想msg如果没有得到响应状态而是数据。