关于Ajax回调函数返回值判断的问题
程序员文章站
2024-01-25 19:57:46
...
今天在做一个检验用户名是否已注册的验证功能时,发现 ajax 回调函数的返回值判断是否相等时出了一些问题,明明打印出来跟判断的字符一模一样,结果就是不相等。
Ajxa 代码:
function validateNameIsReply(){
var empNameNode = $("#empNameInput");
var empNameValue = empNameNode.val();
$.ajax({
url : "${path}/checkNameIsReply",
data :"empName="+empNameValue,
type : "POST",
success : function(result){
alert(result);
alert(result == "该用户名已被注册");
}
})
}
后台代码:
@RequestMapping("/checkNameIsReply")
public void checkNameReply(@RequestParam("empName")String empName, HttpServletResponse response) {
List<Employee> empList = employeeService.findEmpByName(empName);
String result = "";
if(empList.size() > 0) {
result = "该用户名已被注册";
}
try {
response.setContentType("text/html; charset=utf-8");
response.setCharacterEncoding("UTF-8");
response.getWriter().println(result);
} catch (Exception e) {
e.printStackTrace();
}
}
注册时,注册一个一样的用户名时,result 的值返回了 "该用户名已被注册"
alert(result); 的显示
alert(result == "该用户名已被注册"); 的显示
一样的字符串为什么判断相等时就相等呢,经过查找资料知道
虽然两个字符串肉眼看上去没有区别,但是用 setCharacterEncoding("UTF-8") 处理后可能不一样(这里我暂时也不太确定哪里出的问题,网上别人是这样说的)(我处理后发现有个字符串前面有 %EF%BB%BF,另一个则没有 )
解决方法 :
在判断前先调用 trim() 方法去掉返回的字符串首尾空格
alert( result.trim() == "该用户名已被注册" )
判断的结果是 true
推荐阅读
-
关于Ajax回调函数返回值判断的问题
-
关于PHP中函数的返回值的有关问题
-
关于 python gevent 架框 作为 TCP服务器 的 代码问题 , 每个 socket 的 消息 接收 是否有使用 事件监听回调的方法呢?
-
jquery中回调函数的问题,大虾帮忙解决一下~_html/css_WEB-ITnose
-
新帖续问:$.ajax()函数对于怎么利用返回值的一些细节有关问题
-
新帖续问:$.ajax()函数对于如何利用返回值的一些细节问题
-
ajax回调函数返回值 处理时eval的有关问题 苦恼人
-
详解关于微信setData回调函数中的坑
-
浅谈ElementUI中switch回调函数change的参数问题
-
ajax回调函数中使用$(this)取不到对象的解决方法