2012-06-23 85 views
0

我正在使用jQuery和JavaScript的xml工作。我使用ajax導入xml然後我想操縱它,appendChild在IE8中是一個問題。IE8 appendChild XML問題:類型不匹配

這是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

當您在jQuery中包裝xml時,它將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)我收到無效的XML:[對象XMLDocument]但xml看起來有效我 – Mike

+0

是的,當你得到XML的時候在ajax中使用它 – charlietfl