我有一个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在这里公平竞争呢?
答案 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') {
// ...
}
}