Firefox处理来自servlet的响应

时间:2011-06-17 18:03:25

标签: javascript string firefox servlets

我有一个javascript,它使用jQuery从servlet接收信息:

$.get("authenticate", {badge:$('input#badge').val()}, function(data) {
        console.log("xml: "+data);   
        displayInfoReturn(data);
    });

当我在Safari中处理结果时,一切都很有效:

    function displayInfoReturn(data) {
        if (/load/.test(data)) { // ...process string 
        }
    }

但是'if'总是在firefox中返回false(尚未在IE或Chrome中尝试过)。我也尝试使用indexOf!= -1并搜索!= -1。什么都行不通!

然而,我注意到的一个奇怪的事情是当我将数据打印到控制台时:

console.log ("received... "+data);

它返回“收到... [对象XMLDocument]”。显然,它并没有将我的数据视为一个字符串。我尝试了data.toString(),但这也不起作用。那么我怎样才能让firefox在这里公平竞争呢?

1 个答案:

答案 0 :(得分:0)

你的servlet返回什么? application/xml文档或仅text/plain?您在response.setContentType()中设置了什么?您似乎期待XML和Firefox似乎在说它确实是一个XML文档,但是您正在使用该正则表达式.test()将其视为text / plain。我不确定Safari,但看起来它已经覆盖了XML文档对象上的toString(),因此它返回整个XML字符串,以便巧合的正则表达式正常工作。

在不知道确切的XML文档的情况下,很难确定如何修复它。如果是例如

<data>
    <action>load</action>
</data>

然后,您可以使用jQuery自己的XML解析工具检查load标记中是否存在<action>值,如下所示:

function displayInfoReturn(data) {
    if ($(data).find('action').text() == 'load') {
        // ...
    }
}

另见: