无法比较out.print()返回的字符串

时间:2015-02-13 15:01:10

标签: javascript jquery ajax

我使用jsp作为客户端的HTML / JQuery服务器端脚本。 我正在为jsp文件做一个AJAX,一切正常。 当我试图比较jspery ajax结果中的out.print()从jsp返回的字符串时,问题就出现了。这种比较似乎永远不会成真!

似乎out.print()在字符串前面加上了/n

$.post("jsp/login.jsp", { msg: $email.val() + "~" + $pass.val() }, function (result) {
    if (result === "OK") 
        alert("Logged in");
    else
        alert("Invalid Credentials");
});

2 个答案:

答案 0 :(得分:1)

  

out.print()似乎在字符串前面添加了一些/ n。

在这种情况下,您有两个选择。首先,您可以在使用条件中的值之前删除JS中的额外空格:

if ($.trim(result) === "OK") 
    alert("Logged in");
else
    alert("Invalid Credentials");

或者,最好,您可以更改JSP代码以返回JSON。根据定义,这不能将无关的空格添加到其属性的值中。

答案 1 :(得分:0)

记住Java对象比较的工作原理。在java中一个字符串文字" OK"在这种情况下,它本身就是一个对象,并且它在内存中具有自己的位置。当您与另一个字符串对象进行比较时,在这种情况下,您不会像对比原始类型那样比较两个字符串的实际值,而是比较内存中的对象位置。因此,您可以使用与String相关联的类似于String的东西。

//比较返回一个int,-1表示少于,1表示大于,0表示等于

if(result.compareTo("OK") == 0){
//Do your code here
}