我的脑袋即将爆炸。我无法弄清楚这里发生了什么。下面是我处理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' - 如控制台中所示。请有人帮忙吗?
答案 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