【问题标题】:why two identical string is not equal in js为什么两个相同的字符串在js中不相等
【发布时间】:2015-07-20 02:24:12
【问题描述】:

我在 javascript 中使用 AJAX 时遇到了这个问题。

function showUsernameStatus() {
	if (usernameRequest.readyState == 4) {
		if (usernameRequest.status == 200) {
			console.log(typeof(usernameRequest.responseText));
			console.log(usernameRequest.responseText);
			if (usernameRequest.responseText == 'ok') {
				console.log(111);
				document.getElementById('username').className = 'approved';
				usernameValid = true;
			}else{
				console.log(222);
				document.getElementById('username').className = 'denied';
				document.getElementById('username').focus();
				document.getElementById('username').select();
				usernameValid = false;
			}
		}
		checkFormStatus();
	}
}
在镀铬控制台板中显示: 细绳 好的 222 按顺序;

usernameRequest.responseText 的值可以,类型是字符串,但是不等于字符串'ok'。请告诉我为什么,非常感谢!!!

【问题讨论】:

  • console.log(escape(usernameRequest.responseText)); 会告诉你原因。如果字符串不等于则不等于。你里面还有其他角色。
  • 为什么你没有将这段代码添加到你之前的帖子中,而是提出一个新问题?
  • @AVD 你怎么知道的? (问是因为我很好奇如何从这段代码中获取它)(并不是说你可以比较字符串对象和字符串文字)
  • @AVD 你到底在说什么。大声笑一个字符串是一个字符串,
  • @Raptor 是的!我已经解决了。我用了好几次jQuery,现在我想尝试一些新的东西~~~非常感谢。

标签: javascript ajax


【解决方案1】:

根据OP的注释,响应文本实际上是%uFEFFok,响应的开头包含一个BOM(字节顺序标记)字符。

为了去除BOM,要么修剪JS端的文本,要么去除PHP文件中的BOM。

参考:Byte Order Mark

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 2015-09-25
    • 1970-01-01
    相关资源
    最近更新 更多