IE8 appendChild to XML issue: Type Mismatch

Ik werk aan een xml met jQuery en javascript. Ik importeer xml met ajax en dan wil ik het manipuleren, appendChild is een probleem in IE8.

Dit is de Javascript:

// How i get xml 
$.ajax({
  url: production_get,
  dataType: "xml",
  success: function(data) {
      input_xml=data;
  }
});

// how i try to append a new node to 

new_user_node = document.createElement('user');
new_user_node.setAttribute('id',new_user_id);
new_user_node.setAttribute('label',new_user_label);        

response=$(input_xml)[0].getElementsByTagName("response")[0];
response.appendChild(new_user_node);//<- type mismatch

XML-markup


    

Dit werkt prima in alle browsers, maar IE meldt: Type Mismatch. Ik moet zeggen dat het werkt, zelfs in IE8, maar de console meldt de fout, terwijl in IE7 de fout pop-up verschijnt

0
ik heb de oorspronkelijke vraag met details verbeterd
toegevoegd de auteur Mike, de bron
Op welke regel komt deze fout?
toegevoegd de auteur Coder, de bron

1 antwoord

Wanneer u xml in jQuery verpakt, behandelt het de xml als html. Dit maakt het mogelijk om attributen en tekst te krijgen, maar is niet voldoende om de xml te wijzigen.

To create an xml doc to append to you need to use $.parseXML()

/* First create xml doc*/
var xmlDoc=$.parseXML(input_xml);

/*Create jQuery object of xml doc*/
var $xml= $( xmlDoc);

/*Now append*/
$xml.append( new_user_node);

http://api.jquery.com/jQuery.parseXML/

Meer voorbeelden in API

1
toegevoegd
wanneer ik de xml probeer te importeren: success: function (data) {input_xml = data;} met $ .parseXML (data) ontvang ik Ongeldige XML: [object XMLDocument] maar xml ziet er geldig voor mij
toegevoegd de auteur Mike, de bron
ja, gebruik het in ajax als je de xml krijgt
toegevoegd de auteur charlietfl, de bron