使用Ajax接收到Servlet返回的boolean类型数据时的字符串比较问题

当servlet向Ajax返回一个boolean类型的数据时,ajax接收到的是一个字符串类型的 ”true“ 或者 ”false“, 但是当我们直接使用ajax接收到的数据去做一个判断时,比如:

$.ajax({
    url: "xxxx",
    data: {
        xxx
    },
    success: function (data) {
        if ( data == "true" ){
            alert( "data = true" );
        }else {
            alert( "data = false" );
        }
    }
});

这时我们会发现无论servlet向ajax返回的时一个true还是一个false,这个请求成功函数中的 if 语句的结果始终为 false。

遇到这种情况时,我们需要将 if 语句里的条件修改为下面的代码就可以。

$.ajax({
    url: "xxxx",
    data: {
        xxx
    },
    success: function (data) {
        if ( data.toString().trim() == "true" ){
            alert( "data = true" );
        }else {
            alert( "data = false" );
        }
    }
});

总结出现这种状况的原因可能是由于servlet在向ajax返回数据时使用的语句为

out.println();

导致ajax接收到的数据中始终有一个换行符。