我正在尝试创建一个if语句,检查父母是否具有某个I.D.存在于外部xml中。如果它存在,我希望它写它,如果它不希望它回显html中的默认文本。我得到它返回[Object] [object],但如果我从xml中删除了父对象,我就无法运行else语句。有什么想法吗?
function xml() {
$(document).ready(function(){
$("div").append("<ul></ul>");
$.ajax({
type: "GET",
url:"xml.xml",
dataType: "xml",
success: function(d) {
$(d).find('parent[id="1111"]').each(function(){
if ($(this) != undefined){
document.write('<li<b>something</b>'
+$(this).find("id").text()
+'</li><li><b>else </b>'+
$this).find("Status").text()
+'</li>';
}
else{
document.write('<li id="1104"><b>something:</b>'
+' 1104</br><li><b>else:</b> Down ');}
})
}
})
});
}
<root>
<parent id="1111">
<child> Hello World</child
</parent>
</root>
xml在此之后重复,只是使用不同的ID。
答案 0 :(得分:2)
您正在解析XML,就好像它是HTML一样。相反,请使用parseXML
。然后你的find
应该有效。您不需要each
:
success: function(d) {
var elm = $($.parseXML(d).find('parent[id="1111"]'));
if (elm[0]) {
// Found it
} else {
// Didn't find it
}
}
另外,请注意在页面主要解析完成后调用document.write
几乎不是一个好主意:它通过对{{的隐式调用完全消除页面 1}}。您可能想要使用jQuery&#39; document.open
,append
,appendTo
,prepend
等。
此外,prependTo
会在页面上为每 $("div").append("<ul></ul>");
添加ul
。
这是一个将列表附加到一个特定div的示例。我称之为两次,一次是使用具有该元素的XML,一次是使用不包含XML的XML:
div
&#13;
function fakeAjaxResponse(target, d) {
var ul = $("<ul>").appendTo(target);
var elm = $($.parseXML(d)).find('parent[id="1111"]');
if (elm[0]) {
// Found it
$("<li>").text("Found the element: " + elm.text()).appendTo(ul);
} else {
// Didn't find it
$("<li>").text("Didn't find the element").appendTo(ul);
}
}
fakeAjaxResponse(
"#first-result",
'<root><foo><parent id="1111">I'm 1111</parent></foo></root>'
);
fakeAjaxResponse(
"#second-result",
'<root><foo><parent id="1122">I'm 1122</parent></foo></root>'
);
&#13;