【发布时间】:2014-02-13 00:42:37
【问题描述】:
我遇到以下问题。在 jQuery get 函数的回调中,我有以下代码。
x = $.parseXML(data)
xmlDoc = $(x)
y = xmlDoc.find("message")
msg = y.html()
if msg == "MISSING FILE"
# do something about the missing file
else
# xmlDoc IS the document I want.
换句话说,我正在从服务器返回一些东西。如果它是带有“MISSING FILE”的“message”标签的 XML 文档,那么我会处理它。如果不是,我照常使用那个 XML 文档。
此代码在 Firefox 中运行良好。但是在 Safari 中,在 MISSING FILE 情况下,当我尝试使用 y.html() 时,jQuery 会爆炸,并给出以下错误:
TypeError: 'undefined' is not an object (evaluating 'n.innerHTML.replace')
看起来y的值是
[<message>MISSING FILE</message>]
但 Safari 上的 jQuery 无法对其执行 .html()。
【问题讨论】:
-
在尝试获取 html 之前,您能否检查
y.length的长度 -
是....我只是想确保它能够找到元素...所以如果您尝试
console.log(y.length)并且它返回1,那么我们可以考虑为什么.html()不工作,否则我们将不得不弄清楚为什么find()不工作...... -
如果是 ajax 请求,则为 ajax 请求设置
dataType: 'xml',这样您就可以在处理程序中获取已解析的文档,而不必自己解析 -
@interstar 你能
console.log($($.parseXML(data.toLowerCase())).find('message')[0])吗? -
@interstar 尝试将前 4 行更改为
msg = $($.parseXML(data.toLowerCase())).find('message')[0].innerHTML
标签: jquery xml-parsing safari