【发布时间】:2010-10-30 06:17:23
【问题描述】:
我正在尝试在 ajax 成功回调中使用以下 switch 语句:
success: function(datain) {
switch (datain)
{
case "ERROR. No ID. Try again":
$(".errors").append('There was an error.');
break;
case "ERROR. Wrong captcha. Try again":
$(".errors").append('There was an error.');
break;
}
}
datain 是一个字符串(typeof datain 返回string),它确实包含与大小写相同的文本、大小写和标点符号,那么为什么它与这两种情况都不匹配呢?
console.log(datain) 和 console.log("ERROR. No ID. Try again") 完全匹配,并且都返回 typeof 的 string 那么为什么我的情况永远不会匹配?
解决办法及原因
解决方案由 palswim 在$.trim(datain) 下方提供。原因在 Firebug 中是可见的,事实上字符串末尾有一个换行符,而我的 switch case 没有......所以我得到“foo\n”并试图匹配“foo”。鉴于 js 在 switch 中使用===,这自然(现在我看到了)就是它失败的原因。
【问题讨论】:
-
尝试
datain === testStr,获取合适的datatin/testStr,看看结果如何。这应该能让你到达某个地方。
标签: javascript jquery