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

Cannot compare String returned by out.print()

本文关键字:返回 字符串 print 比较 out      更新时间:2023-10-14

我使用jsp作为服务器端脚本,客户端使用HTML/JQuery。我正在对jsp文件进行AJAX操作,一切正常。当我试图将out.print()从jsp返回的字符串与jquery ajax结果中的字符串进行比较时,问题就开始了。这种比较似乎永远不会是真的!

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

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

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

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

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

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

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

//Compare to返回一个int,-1表示小于,1表示大于,0表示等于

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