下面的ajax函数应该在成功登录时重定向到新页面,但它只回显div中用于错误消息的单词“success”。我尝试过多种变化无济于事,其中一些我已经包含在下面。我已经搜索了这个和所有其他网站,我知道这对许多人来说是一个问题但是对其他人的建议解决方案对我没有用,有人能看出问题是什么吗?
ajax:
function processLogin() {
var username = $('#username').val();
var password = $('#password').val();
var link = $("mysite.com/newpage").attr('href');
$('#bad_login').html('Checking Login Info...<img src="images/process.gif" />');
$.ajax({
type: "POST",
url: "process_login.php",
data: "username=" + username + "&password=" + password,
success: function(data){
alert(data);
if(data=="success"){ // **this is where the problem is***
location.assign("http://www.mysite.com/newpage.php");
exit;
}else{
window.setTimeout(function()
{
$('#bad_login').html(data);
$('#data').css("display","block");
$('#data').html(data);
}, 2000);
}
}
});
return false;
}
部分php
if ($pass== $checkpass) {
$data="success";
echo $data;
} else {
// IF USER PASSWORD IS INCORRECT
echo "Incorrect password!";
}
尝试过: window.location.href =
加上其他我不记得的变化,对此失去了理解
答案 0 :(得分:1)
关于评论的讨论,你可能有一个从process_login.php返回的UTF-8 bom char。
BOM字节顺序标记是一个不可见的字符,有时它会在文档通道的头部发送,以向浏览器指示UTF-8文档。您无法通过警报()看到它。
无论如何,因为你已经使用了Ajax调用,所以为什么不使用不太严格的检查:
if(data.indexOf("success") >= 0) {
取代
if(data == "success") {
答案 1 :(得分:0)
尝试修剪它:http://api.jquery.com/jQuery.trim/
data=$.trim(data);
if(data=="success") { etc
至少,你的Ajax可能正常工作。因为它在Badlogin中返回了正确的内容:D