问题描述
不确定为什么indexOf无法识别“错误”一词。
PHP脚本返回的文本为:
echo "Error: user was not updated.";
在JQuery中,我具有以下内容:
$.post('api/editUser.PHP',{robj:robj},function(data){
if(data.indexOf('Error')){
console.log("bad - " + data);
}
else{
console.log("good - " + data);
}
});
indexOf问题吗?
我在做什么错了?
解决方法
indexOf
返回0
,因为您的单词被放置为字符串中的第一个单词。零是falsy
的值,因此请尝试重写以检查indexoOf() != -1
:
if( data.indexOf('Error')!= -1){
console.log("bad - " + data);
}
else{
console.log("good - " + data);
,indexOf()方法返回给定元素的第一个索引 可以在数组中找到;如果不存在,则为-1。
如果您尝试记录indexOf
返回,您会看到它返回0
console.log( "Error: user was not updated.".indexOf("Error") )
然后if (0)
进入else
区块
if (0) {console.log("in if")} else {console.log("in else")}
之所以发生这种情况,是因为0
是falsy value
,这意味着当转换为布尔值时该值被视为false
要获取所需内容,可以使用indexOf === 0
(如果开头没有"Error"
的任何消息是有效消息,或者使用includes
,如果任何包含"Error"
的消息)不管它是无效的
console.log( "Error: user was not updated.".indexOf("Error") === 0 )
console.log( "Error: user was not updated.".includes("Error") )
console.log( "message with Error at the center".indexOf("Error") === 0 )
console.log( "message with Error at the center".includes("Error") )
,
尝试使用search()
。它主要用于正则表达式,但是如果您使用纯文本,它将仍然有效,因为它将是有效的正则表达式。
请注意,由于它被视为 RegEx ,因此不如indexOf
出色。
P.s。我知道您知道来自服务器的确切文本,但是为了保持一致性,将所有内容都转换为小写总是更安全。
这应该有效:
$.post('api/editUser.php',{robj:robj},function(data){
if(data.toLowerCase().search('error')){
console.log("bad - " + data);
}
else{
console.log("good - " + data);
}
});