JQuery с использованием XML в качестве HTML в IE 8.0 и других браузерах
Мне нужно получить строку XML с сервера, который отформатирован как:
<xml><material>
<record>
<id>..</id>
<name>..</name>
<quantity>..</quantity>
<plink>..</plink>
</record>
<record>
..
</record>
</xml></material>
Клиентская сторона получает этот XML и обрабатывает его:
$.ajax({
url:'getrecords.php',
cache:false,
type:"GET",
dataType:'html',
success:function (html){
var records=$(html).find("record");
alert(records.length);
}
Моя проблема в том, что этот код работает нормально в Chrome и Firefox, но не в IE 8.0 (я использую 8.0). Он предупреждает 0 в IE, в то время как он сообщает правильную длину в Chrome и Firefox.
Я пытаюсь это, но он также показывает, что длина записи 0 в IE, но хорошо в Chrome
var records=$("<xml><root><item></item></root></xml>").find("item");
2 ответа
Решение
<!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>
<title></title>
<script src="../../../Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
var xml = '<?xml version="1.0" encoding="utf-8" ?><material><record><id>1</id><name>A</name><quantity>10</quantity>'
+ '<plink>test</plink></record><record><id>2</id><name>B</name><quantity>20</quantity><plink>test1</plink>'
+ '</record><record><id>3</id><name>C</name><quantity>34</quantity><plink>test2</plink></record><record>'
+ '<id>4</id><name>B</name><quantity>45</quantity><plink>test6</plink></record></material>';
// $.ajax({
// url: 'getrecords.php', cache: false, type: "GET", dataType: 'html',
// success: function (xml) {
var data = $($.parseXML(xml));
var records = $(data).find('record');
alert(records.length);
// }
// });
});
</script>
</head>
<body>
<?xml version="1.0" encoding="utf-8" ?>
<material>
<record>
<id>1</id>
<name>A</name>
<quantity>10</quantity>
<plink>test</plink>
</record>
<record>
<id>2</id>
<name>B</name>
<quantity>20</quantity>
<plink>test1</plink>
</record>
<record>
<id>3</id>
<name>C</name>
<quantity>34</quantity>
<plink>test2</plink>
</record>
<record>
<id>4</id>
<name>B</name>
<quantity>45</quantity>
<plink>test6</plink>
</record>
</material>
</body>
</html>
Почему вы устанавливаете dataType как html, если возвращается xml? Попробуйте с dataType 'xml'