今天我发现我的网站开发版本没有执行成功回调,但所有其他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()中包含成功回调数据;
答案 0 :(得分:0)
如何在成功函数的代码中添加else { alert('No match for msg'); }
块,或许您会发现msg与您的任何IF语句都不匹配。
jQuery doc表示成功函数的签名应该是:success(data, textStatus, XMLHttpRequest)
所以我想msg如果没有得到响应状态而是数据。