否则不能在javascript中工作

时间:2014-02-17 14:14:34

标签: javascript php

这是我的代码

  $('#login').on('click',function(e){
    e.preventDefault();
    var username = document.getElementById('username').value;
    var password = document.getElementById('password').value;
    var ajax = new XMLHttpRequest();
    var vars = 'username='+username+'&password='+password;
    var url = "singInDrProcess.php";
    ajax.open("POST", url, true);
    ajax.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    ajax.send(vars);
    ajax.onreadystatechange = function() {
        if(ajax.readyState == 4 && ajax.status == 200) {
            var return_data = ajax.responseText;
            if(return_data!="success_login")
                document.getElementById("result_signin").innerHTML = return_data;
            }else{
                window.location.replace("profile.php");
                           }
        }
  });

问题是,当用户访问此页面并尝试登录时,即使他从未输入任何用户名或密码,只需单击我的登录按钮,页面也会被重定向到profile.php 我的意思是,ELSE部分总是运行,或者字段上有数据或者所有字段都是空的 有什么问题?

3 个答案:

答案 0 :(得分:2)

根据括号缩进代码:

if(ajax.readyState == 4 && ajax.status == 200) {
    var return_data = ajax.responseText;
    if(return_data!="success_login")
        document.getElementById("result_signin").innerHTML = return_data;
}else{
     window.location.replace("profile.php");
}
} // extraneous

这不是你想要的。

{之后添加if(return_data!="success_login")或在}之前移除else将解决此问题:

if(ajax.readyState == 4 && ajax.status == 200) {
    var return_data = ajax.responseText;
    if (return_data!="success_login") {
        document.getElementById("result_signin").innerHTML = return_data;
    } else {
        window.location.replace("profile.php");
    }
}

答案 1 :(得分:1)

您在{

之后忘记了if(return_data!="success_login")

但应该是

 if(ajax.readyState == 4 && ajax.status == 200) {
 //--------------add opening curly brace here---^

答案 2 :(得分:1)

if(return_data!="success_login")
            document.getElementById("result_signin").innerHTML = return_data;
        }else{
            window.location.replace("profile.php");
                       }
    }
});

应改为

if(return_data!="success_login")
            {document.getElementById("result_signin").innerHTML = return_data;
        }else{
            window.location.replace("profile.php");
                       }
    }
});

你忘了{在if括号之后。

此外,您应该使用JSHint,因为它有助于解决错误等问题。