问题背景:通过ajax来实现检测用户名,若用户名已存在,则提示已存在并且清空文本框;若不存在则提示可用。在checkname.jsp中写的时候,通过out.write();返回提示,在index.jsp中通过if语句判断返回的字符串情况,发现if总是执行了false的部分。于是将out.write();里的"fail"改为数字1,检测,失败。if中判断的是 " =="1" ",改变方式,判断" ==1 ',结果if执行了true的部分。并且,之前返回的alert窗口中,提示语明显有几个回车的空间。但是新建一个Servlet文件,将checkname.jsp中的内容拷贝进去,能够成功实现目的,并不会出现错误。
思考:根据情况可以判断,语句没有问题,应该和JSP的文件格式特性有关,所以出现了一些问题。
解决办法:在index.jsp的获得ajax返回值的函数中添加console.log(); 通过浏览器控制台检查发现,返回的字符串中的开头,有好几个回车符。
所以可以这样来判断:
①通过正则表达式去掉空格回车
②进行字符串判断的时候,用indexOf来判断是否含有目标字符串
因为JSP中的换行都会被打印,所以我们可以在输出之前,清空一下:
③在out.write();前,先out.clear();,则也能解决问题。
词穷诗尽方知才疏学浅,勤学好问才可修成正道。
如有问题,请慷慨指教!