【发布时间】:2011-01-17 18:33:52
【问题描述】:
今天我发现我的网站的开发版本不执行成功回调,但所有其他 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() 中;
【问题讨论】:
-
当您执行
alert(msg)时,您是否获得了正确/预期的值? -
你为什么不实现错误:函数?也许有什么问题?
-
什么意思?我的代码不会运行成功回调,因此永远不会触发警报。但是是的,msg 返回正常,如果没有执行。
-
我同意,你确定它会进入 msg=='OK' 部分吗?也许您想发出警报并显示 msg 变量中的内容。
-
我怀疑里面有“空格”,因为它是一个 html。试试
success: function(msg){ var msg= $.trim(msg); ..... }
标签: jquery