用JQuery的Ajax加载XML并解析的注意事项
<div class="blog_content">1、Content-Type很多时候无法解析就是Content-Type的问题。如果本身就是XML文件,请跳过这一步。
动态生成的XML一定要将其设置为text/xml,否则默认就是text/html也就是普通的文本。 常见语言的Content-Type设置:
response.setHeader("ContentType","text/xml"); //jsp
response.ContentType= "text/xml"; //asp
header("Content-Type:text/xml"); //php
2、xml结构
XML一定要封闭的,很重要的!
<?xml version="1.0" encoding="UTF-8"?>
<stulist>
<student email="lynn@126.com">
<name>zhangsan</name>
<id>1</id>
</student>
<student email="lynn@sina.com">
<name>lisi</name>
<id>2</id>
</student>
</stulist>
3、解析
遍历student(这里还是用上面那个XML,子节点是student)
$.ajax({
url:'ajax.jsp',
type:'GET',
dataType:"xml",
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 id_value = id.text(); //取文本 或者 $("id",xml).text();
alert($(this).attr("email")); //这里显示student下的email属性】
$('<li></li>').html(id_value).appendTo('ol');
});
}
});
4、禁用缓存
如果你直接使用Ajax方法,可以使用cache:false来禁用缓存。
如果你使用get或者post方法,可以在url后面加上时间戳:"xml.jsp?timestamp=" + (new Date());
注意:不要使用随机数,因为你无法预料到随机数会不会再随机到......
但是在一切正常的情况下,时间戳是肯定不会重复的。
页:
[1]