【问题标题】:comparing strings in javascript (string origin is from xmlhttp.responseText)比较 javascript 中的字符串(字符串来源来自 xmlhttp.responseText)
【发布时间】:2013-06-04 16:59:43
【问题描述】:

我的 servlet 响应一个包含“false”或“true”的字符串 => Servlet 代码:out.println(validusername); validusername 是来自我的 servlet 的字符串,它转到我的 javascript 中的 var validusername。

所以在我的前端,我有这个 javascript 代码: 问题是当我的 servlet 返回 false 时,javascript 总是跳到“else”中。我想知道为什么.. 搜索这个几个小时。 我知道我的 servlet 以“false”响应,因为 alert(validusername) 出现一个弹出窗口,其中包含文本“false”...你们知道为什么 validusername =="false" 总是跳到我的 else标记?

我觉得比对有问题,但是找不到...

非常感谢您的帮助

var validusername = xmlhttp.responseText; 
 if (validusername == "false") {

  alert("username already exists");
 }
 else {

 alert("username free");
 alert(validusername); //this popup contains the value "false"

【问题讨论】:

  • 也许是因为你真正拥有的是false\n

标签: java javascript ajax servlets xmlhttprequest


【解决方案1】:

从今天起停止使用alert(...),改用“console.log(...)”。它将数据打印到 Web 控制台,您可以更好地了解正在发生的事情。它也不会阻止您的页面。如果没有关于正在发生的事情的信息,第一个建议是强制验证所有数据。即使您拥有该 servlet。

通过使用if (validusername.trim() === "false") 强制if (validusername == "false") 正确解析——现在如果它失败了,至少该字符串不能“看起来”像假而不实际上是“假”。

【讨论】:

  • 谢谢你!这行得通,我将使用 console.log 进行进一步调试
【解决方案2】:

可能您需要修剪字符串并进行比较。

validusername = validusername.replace(/^\s+|\s+$/g,"");

【讨论】:

  • JavaScript 有一个String.trim() =)
猜你喜欢
  • 1970-01-01
  • 2019-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多