+ -
当前位置:首页 → 问答吧 → 用jquery ajax 读取xml一个奇怪的错误

用jquery ajax 读取xml一个奇怪的错误

时间:2009-05-05

来源:互联网

用jquery ajax 读取xml,如果从一个动态生成的xml的页面获取,总是返回paser error的错误,我觉得是xml的格式有问题,但是当我把这个动态页面内容直接复制下来存为一个固定的xml文件,读取就没问题,这是怎么一回事呢?
复制代码
  1. $(document).ready(
  2. function()
  3. {
  4. $("#xingming").keyup(
  5. function(){
  6. $.ajax({
  7. type:"get",
  8. //url:"ajax.php",
  9. url:"1.xml", //1.xml的内容就是从ajax.php中复制后保存下来的
  10. data: "name="+$("#xingming").val(),
  11. dataType: "xml",
  12. ifModified: true,//解决缓存问题
  13. error: function(XMLHttpRequest, aaa, errorThrown){
  14. alert(aaa);
  15. },
  16. success:function(xml){
  17. $(xml).find("user").each(
  18. function()
  19. {
  20. $("#abc")[0].innerHTML=$(this).find("dept").text();
  21. }
  22. )
  23. }
  24. });
  25. }
  26. )
  27. }
  28. )

复制代码
  1. <body>
  2. <input type="text" name="xingming" id="xingming" /><div id="abc"></div>
  3. </body>

复制代码
  1. <?xml version="1.0" encoding="gb2312" ?>
  2. <users>
  3. <user>
  4. <name>王成</name>
  5. <dept>部门A</dept>
  6. </user>
  7. <user>
  8. <name>毛莉莉</name>
  9. <dept>部门B</dept>
  10. </user>
  11. </users>

作者: pigbin   发布时间: 2009-05-05

动态输出的话,header中要写上content-type为text/xml。如果是utf8,需要先输出BOM标记。

此外,检查一下页面编码是否和xml的编码相符,最好是都用utf8。

作者: keakon   发布时间: 2009-05-05

找到原因了,今天早上起来,突然想到了,要在header中加入Content-Type:application/xml。
如果不加默认输出content-type为text/xml,就不能正常工作了。
问题解决了,感谢楼上的回复,你还是找到问题的关键了,不过应该是application/xml才对,谢谢!

作者: pigbin   发布时间: 2009-05-06

2者都是可以的
http://en.wikipedia.org/wiki/XML_and_MIME

不加是默认输出text/html,不是text/xml

作者: keakon   发布时间: 2009-05-06

看来如果可以先看一下置顶帖,就能解决很多问题了

作者: shawphy   发布时间: 2009-05-06

热门下载

更多