jquery ajax调用xml静态文件,ie下无法识别的问题

anjing5566 2009-03-17 11:35:44
应该是个比较基础的问题,但是困扰我很久,服务器生成的xml文件是没有问题,主要是我用editplus新建的xml有问题。
一知半解不是好事情,所以开了这个贴,大家一起讨论一下,下面用到的源码直接来自于网络:
HTML:
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<title> new document </title>
<meta name="generator" content="editplus">
<meta name="author" content="">
<meta name="keywords" content="">
<meta name="description" content="">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head>
<script type="text/javascript" src="js/jquery.js" ></script>
<script type="text/javascript">
$.ajax({
url:'test.xml',
type: 'get',
datatype: 'xml',//这里可以不写,但千万别写text或者html!!!
timeout: 1000,
error: function(xml){
alert('error loading xml document'+xml);
},
success: function(xml){
alert(xml);
$(xml).find("student").each(function(i){
var id=$(this).children("id"); //取对象
var id_value=$(this).children("id").text(); //取文本
alert(id_value);//这里就是id的值了。
alert($(this).attr("email")); //这里能显示student下的email属性。
//最后么输出了,这个是cssrain的写法,貌似比macnie更jq一点
$("<li></li>").html(id_value +":"+$(this).attr("email")).appendTo("ol");
});
}
});
</script>

<body>
<ol></ol>
</body>
</html>

XML部分
<?xml version="1.0" encoding="utf-8"?> 
<stulist>
<student email="1@1.com">
<name>zhangsan</name>
<id>1</id>
</student>
<student email="2@2.com">
<name>lisi</name>
<id>2</id>
</student>
</stulist>

备注,jquery文件请大家自备,xml文件请用editplus创建,这个问题本人一直没有弄明了,当然有很多替换的方法,但本人只想了解原因,ff下正常,ie下显示获取到了xml文件,但没有解析。
至于Content-Type,静态xml如何设置?
谢谢大家先!
...全文
1758 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhangtaolei 2011-08-11
  • 打赏
  • 举报
回复
。。。。。。。。。你这个问题很简单。。。。。没那么复杂。。。datatype: 'xml'改成dataType:'xml'就可以了...
zth603 2011-04-13
  • 打赏
  • 举报
回复
bplustree 2011-02-18
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wyxyuxiang 的回复:]

本地的xml文件根元素必须是<xml></xml>
Ajax的dataType必须是大写的XML才可以运行
[/Quote]

right.
dyc0723 2011-02-15
  • 打赏
  • 举报
回复
同样的问题。
yuxh81 2010-09-02
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 wyxyuxiang 的回复:]
本地的xml文件根元素必须是<xml></xml>
Ajax的dataType必须是大写的XML才可以运行
[/Quote]

你是对的,实践证明根元素为xml,IE是可以读取的!
happy200318 2010-08-19
  • 打赏
  • 举报
回复
遇到同样的问题了
dogiant 2010-07-07
  • 打赏
  • 举报
回复
<script type="text/javascript">
function createXml(str){
  if(document.all){
  var xmlDom=new ActiveXObject("Microsoft.XMLDOM")
  xmlDom.loadXML(str)
  return xmlDom
  }
  else
  return new DOMParser().parseFromString(str, "text/xml")
}
$(document).ready(function(){
$("a").click(function(event){
var txt = "<musiclist><music><musicid>3088</musicid></music></musiclist>";
//alert(txt);
var x = createXml(txt);

var a = $(x).find("musicid").eq(0).text();
alert(a);
event.preventDefault();
});

});
</script>
jone320 2010-05-16
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 mumu_java 的回复:]
呵呵,根据判断浏览器的类型做不同的处理。
[/Quote]
这种方式可以获取,但ie下还是不能取得xml类容里的值
wyxyuxiang 2010-05-10
  • 打赏
  • 举报
回复
本地的xml文件根元素必须是<xml></xml>
Ajax的dataType必须是大写的XML才可以运行
mumu_java 2009-04-08
  • 打赏
  • 举报
回复
呵呵,根据判断浏览器的类型做不同的处理。
SXZhang 2009-04-08
  • 打赏
  • 举报
回复
试试在success callback里加上判断

if (typeof xml == "string") {
xmlDom = new ActiveXObject("Microsoft.XMLDOM");
xmlDom.async = false;
xmlDom.loadXML(xml);
xml = xmlDom
}
anjing5566 2009-03-17
  • 打赏
  • 举报
回复
那么具体是原因引起的呢,此外,发现$(this).children("id").text()无法获取值
以前写过xml搜索的js,后来是更改了xml格式才ok的
我是想不动数据结构,只更改js代码,不过在ie下容易出问题
anjing5566 2009-03-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 JaggerLee 的回复:]
JQuery 和 IE 的bug 吧

如果你吧 studlist 换成 a或者任意DOM标签,就能找到
[/Quote]
测试可行
JaggerLee 2009-03-17
  • 打赏
  • 举报
回复
JQuery 和 IE 的bug 吧

如果你吧 studlist 换成 a或者任意DOM标签,就能找到
lotusprince 2009-03-17
  • 打赏
  • 举报
回复

用IE 在本地文件夹里面打开 是不会运行的 , 要放在服务器上 就会运行!

我以前也写过类似的代码!
anjing5566 2009-03-17
  • 打赏
  • 举报
回复
自己占沙发
wclszh 2009-03-17
  • 打赏
  • 举报
回复
jquery用的少,等高手。

87,914

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧