六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 27|回复: 0

在jQuery中利用AJAX加载XML数据并解析

[复制链接]

升级  17.33%

20

主题

20

主题

20

主题

秀才

Rank: 2

积分
76
 楼主| 发表于 2013-1-23 02:48:09 | 显示全部楼层 |阅读模式

1,Content-Type
很多时候无法解析就是Content-Type的问题。
如果本身就是xml文件,请跳过这一步
动态生成的XML一定要将其设置为text/xml,否则默认就是text/html也就是普通的文本了。
常见语言的Content-Type设置

header("Content-Type:text/xml"); //php 
response.ContentType="text/xml" //asp 
response.setHeader("ContentType","text/xml");  //jsp

2,xml结构。
XML一定要封闭的,很重要!
例:
错误的XML


<?xml version="1.0" encoding="UTF-8"?> <name>zhangsan</name> <id>1</id> <name>lisi</name> <id>2</id> 正确的
<?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>

3,解析
这里引用macnie的
遍历student(这里还是用上面那个XML,子节点是student)

$.ajax({ 
url:'ajax.asp', 
type: 'GET', 
dataType: 'xml',//这里可以不写,但千万别写text或者html!!! 
timeout: 1000, 
error: function(xml){ 
      alert('Error loading XML document'+xml); 
}, 
success: function(xml){ 
       $(xml).find("student").each(function(i){ 
         var id=$(this).children("id"); //取对象 
         var idvalue=$(this).children("id").text(); //取文本 
         alert(id_value);//这里就是ID的值了。 
         alert($(this).attr("email")); //这里能显示student下的email属性。 
         //最后么输出了,这个是cssrain的写法,貌似比macnie更JQ一点 
         $('<li></li>') 
            .html(id_value) 
            .appendTo('ol'); 
      }); 

});

最后补充一条:保证服务器端是utf-8的编码,否则会乱码!同时也要保证你的xml文件也是utf-8格式的。
 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表