JavaScript比较具有相同值的两个字符串失败

时间:2014-04-04 20:30:42

标签: javascript php string

我正在尝试比较两个似乎包含相同值的字符串,但它不起作用。

这是我的代码:

ABC.prototype.is_in_DB = function () {
    var ans = "";
    if (window.XMLHttpRequest) {
        var xmlhttp = new XMLHttpRequest();
    } else {
        var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    }
    xmlhttp.onreadystatechange = function () {

        if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
            ans = (xmlhttp.responseText);
        }
        return ans;
    }
    xmlhttp.open("POST", "ABC_DB.php", false);
    xmlhttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlhttp.send("id=" + this.get_id() + "&name=" + this.get_type() + "&description=" + this.get_description() + "&kind=" + this.get_kind());

    var check = "true";

    console.log("this is ans type    " + typeof (ans));
    console.log("this is ans length    " + ans.length);
    console.log("this is ans     " + ans);
    console.log("this is check type    " + typeof (check));
    console.log("this is check length    " + check.length);
    console.log("this is check     " + check);

    if (ans === check) {
        console.log("the if is true ");
        return true;
    } else {
        console.log("the if is false ");
        return false;
    }
}

php文件工作,它的结尾看起来像这样(文件中没有更多的echo命令)

 if ($row_cnt>0){
     echo('true');
 } else {
     echo('false');
 } 

当我打印字符串的值时,我会收到以下内容

  

这是ans类型字符串

     

这是长度为5

     

这是真的

     

这是检查类型字符串

     

这是检查长度4

     

这是真的

     

if是假的

你知道我怎么比较它吗?

5 个答案:

答案 0 :(得分:1)

尝试使用ans.trim()并使用==而不是=== 似乎ans也可以有一个尾随字符,如\ n

答案 1 :(得分:0)

狂野猜测,但因为“ans”的长度为5,但值为“true”,我愿意打赌那里有一个空格。尝试在回声之前添加修剪(ans),看看是否修复了它。

答案 2 :(得分:0)

看来你的responseText带有一些空格。

尝试使用:if (ans.trim() == check)

答案 3 :(得分:0)

尝试消除anscheck不是同一个对象的可能性==而不是===

答案 4 :(得分:0)

感谢大家。 我发现对我有用的是添加以下两行

x=(xmlhttp.responseText);
ans=x.replace(/^\s*/,'').replace(/\s*$/,'').toLowerCase();

我遇到的问题是由于额外的空白。 这条线消除了它们。