语法问题 - 将XMLHttpRequest.responseText与字符串进行比较

时间:2015-08-15 10:56:20

标签: javascript ajax

我的脑袋即将爆炸。我无法弄清楚这里发生了什么。下面是我处理ajax请求的代码。

 xmlhttp_DELrep.onreadystatechange = function(){
    if(xmlhttp_DELrep.readyState == 4 && xmlhttp_DELrep.status == 200){

        if(xmlhttp_DELrep.responseText == 'delete_ok'){
            document.getElementById(replyboxID).style.display='none';
            console.log('delete success!');
        }else{
            console.log('delete fail');
            console.log('xmlhttp_DELrep.responseText: '+ xmlhttp_DELrep.responseText);
        }
    }
}

这是我通过控制台获得的响应:

 delete fail
 xmlhttp_DELrep.responseText: delete_ok

我不明白为什么我的第一个'if'语句没有执行,因为xmlhttp_DELrep.responseText确实等于'delete_ok' - 如控制台中所示。请有人帮忙吗?

2 个答案:

答案 0 :(得分:1)

您可能在文本响应的右侧有空格,您无法在控制台输出中看到。如果您使用trim()修剪它们,您的代码将正常运行。

答案 1 :(得分:0)

我不知道它是否会解决你的问题,但我会尝试不同的方法来比较字符串。

如下面的参考资料中所示,您可以使用:

string_a.localeCompare(string_b);

/* 
    Returns:
    0:  exact match
   -1:  string_a < string_b
    1:  string_b > string_b
*/

另一个问题可能是在控制台输出中看不到的空格。

if(xmlhttp_DELrep.responseText.trim() == 'delete_ok') { ... }

参考文献:

https://stackoverflow.com/questions/2167602/optimum-way-to-compare-strings-in-javascript