尝试使用Jquery

时间:2015-06-18 11:33:27

标签: jquery ajax xml

我正在尝试创建一个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。

1 个答案:

答案 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.openappendappendToprepend等。

此外,prependTo会在页面上为 $("div").append("<ul></ul>");添加ul

这是一个将列表附加到一个特定div的示例。我称之为两次,一次是使用具有该元素的XML,一次是使用不包含XML的XML:

&#13;
&#13;
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;
&#13;
&#13;