Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
if语句不工作-javascript_Javascript_Php_If Statement - Fatal编程技术网

if语句不工作-javascript

if语句不工作-javascript,javascript,php,if-statement,Javascript,Php,If Statement,我无法识别此javascript代码中的问题。我从服务器返回代码154、155和1,使用特定的逻辑。这些数字是返回值,但如果if语句返回的值在if语句中为true,则if语句不能正常工作,否则它仍然运行else(默认值)。不知道为什么它不能检查值是否相同 `$("#btnlogin").click(function (){ // Create our XMLHttpRequest object var hr = new XMLHttpRequest(); // Creat

我无法识别此javascript代码中的问题。我从服务器返回代码154、155和1,使用特定的逻辑。这些数字是返回值,但如果if语句返回的值在if语句中为true,则if语句不能正常工作,否则它仍然运行
else
(默认值)。不知道为什么它不能检查值是否相同

`$("#btnlogin").click(function (){

   // Create our XMLHttpRequest object
    var hr = new XMLHttpRequest();
    // Create some variables we need to send to our PHP file
    var url = "phpfiles/login.php";
    var username = document.getElementById("username").value;
    var password = document.getElementById("password").value;    

    var vars = "username="+username+"&password="+password;
    hr.open("POST", url, true);
    // Set content type header information for sending url encoded variables in the request
    hr.setRequestHeader("Content-type", "plain/text");

    // Access the onreadystatechange event for the XMLHttpRequest object
    hr.onreadystatechange = function() {
        if(hr.readyState == 4 && hr.status == 200) {
            var return_data = hr.responseText;


            if (return_data == "154"){
                $.Notification.notify('error','top left', 'Wrong Information', 'Username/Password is incorrect');
            }else if (return_data=== "155")
            {
                $.Notification.notify('error','top left', 'User Does not exist', 'This user Does not exist. Please Check and try again.');
            }
            else if (return_data == "1")
            {
                $.Notification.notify('success','top left', 'Success', '');
                GenToken();
            }else{
                alert();
            }
        };
    };
    // Send the data to PHP now... and wait for response to update the status div
    hr.send(vars); // Actually execute the request




});`
无论条件是真是假,它都会下到其他条件。它指向这个代码

`<?php

if(isset($_POST['username']))
{
    $username = FILTER_INPUT(INPUT_POST, "username", FILTER_SANITIZE_STRING);
    $password = FILTER_INPUT(INPUT_POST, "password", FILTER_SANITIZE_STRING);

    require_once("../class/class.login.php");
    $lh = new LoginHander;

    $lh->LogUserIn($username, $password, 'admin');
}
?>`

我不知道我尝试了
===
而不是
==
的问题在哪里,但它没有帮助。请告诉我我在哪里犯的错误。提前感谢

可以在浏览器中调试Javascript。无论何时,只要观察到某个条件的计算结果不正确,最好使用调试器对其进行检查

return_data == "154"
是一种非严格检查,即使其类型不同,也将评估为
true
154==“154”
true
。另一方面

return_data=== "155"
这是一个严格的比较
155==“155”
false

return_data == "1"
这是另一个不严格的比较


通常,这些错误发生在对相似但不相同的值进行严格比较的情况下,或者在值的开头或结尾可以找到白色字符的情况下。事实证明,情况就是这样。

你能提供一个答案吗?你验证了
返回数据的值了吗?(
alert(return\u data)
console.debug(return\u data)
)很抱歉,兄弟,如果我减少了任何内容,那么我认为您将无法生成错误以找到解决方案是的,它工作正常返回155或154或1 doing
console.log(“--”)
将帮助您检查返回代码周围是否有多余的空格字符。字符串
“154”
与字符串
“154”
不相等。是的,有空格。这就是它无法验证的原因。“SharikShaikh,如果你相信这回答了你的问题,那么你可以考虑通过点击在答案左边的投票计数下面的复选框来接受它。
return_data == "1"