2012-06-23 1 views
0

Я работаю над xml, используя jquery и javascript. Я импортирую xml с помощью ajax, тогда я хочу манипулировать им, appendChild - проблема в IE8.IE8 appendChild to XML issue: Type Mismatch

Это 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 разметки

<response> 
    <user id="123" label="John" /> 
</response> 

Это прекрасно работает во всех браузера, но IE, что отчеты: Тип Рассогласуйте. Я должен сказать, что это работает даже в IE8, но консоль сообщает об ошибке, в то время как в IE7 появляется всплывающее окно ошибки

+0

На какой линии идет эта ошибка? – Coder

+0

Я улучшил исходный вопрос с подробностями – Mike

ответ

1

Когда вы переносите xml в jQuery, он обрабатывает xml как html. Это позволяет перемещаться, чтобы получить атрибуты и текст, но не является достаточным для модификации xml.

Чтобы создать XML-документ для добавления к вам нужно использовать $.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/

Больше примеров в API

+0

, когда я пытаюсь импортировать xml: success: function (data) {input_xml = data;} с использованием $ .parseXML (data) i receive Invalid XML: [object XMLDocument], но xml выглядит действительным me – Mike

+0

Да, используйте его в ajax, когда вы получите xml – charlietfl