IE下jquery 訪問 XML 數據時發生 parsererror, TypeError: 缺少對象 錯誤的解決方案

jQuery 版本:1.4.4
IE 版本:        8.0
錯誤信息:     parsererror, TypeError: 缺少對象

test.xml

<?xml version="1.0" encoding="utf-8"?>
<rows>
	<row>
		<id>1</id>
		<name>a.wav</name>
	</row>
	<row>
		<id>2</id>
		<name>b.wav</name>
	</row>
	<row>
		<id>3</id>
		<name>c.wav</name>
	</row>
</rows>

test.html

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
	<head>
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
		<title>test</title>
		<script type="text/javascript" src="jquery-1.4.4.min.js"></script>
		<script type="text/javascript">
		$(document).ready(function() {
			$.ajax({
				url: "test.xml", 
				dataType: "xml",
				sucess: function(xml){
					$(xml).find("row").each(function() {
						alert($(this).find("name").text());
					});
				},
				error: function (xmlHttpRequest, textStatus, errorThrown) {
					var errMsg = "通過 jquery 訪問 XML 數據時發生錯誤!";
					errMsg += "\nxmlHttpRequest.status = " + xmlHttpRequest.status;
					errMsg += "\nxmlHttpRequest.readyState = " + xmlHttpRequest.readyState;
					errMsg += "\ntextStatus = " + textStatus;
					errMsg += "\nerrorThrown = " + errorThrown;
				    alert(errMsg);
				}
			});
		});
		</script>
	</head>
	<body>
		jquery 訪問 XML 的測試頁面。
	</body>
</html>

運行結果


解決方案

將 javascript 代碼改爲:
$.get("test.xml", function(data) {
	var xml = null;
	if ($.browser.msie) {
		xml = new ActiveXObject("Microsoft.XMLDOM");
		xml.async = false;
		xml.loadXML(data);
	} else {
		xml = data;
	}
	$(xml).find("row").each(function() {
		alert($(this).find("name").text());
	});
});

相關閱讀:XMLHttpRequest 對象(AJAX)的狀態碼(readyState)及HTTP 狀態代碼(status)的對照表

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章