2011-10-10 67 views
1

我有一个在PHP脚本编写XML的脚本。使用jQuery解析XML从php

我使用ajax调用来读取该XML。

$.ajax({ 
     url: "http://blablabla.com/myscript.php", 
     data: requestVars, 
     dataType: 'xml', 
     success: function(xml){ 
      XMLParser(xml); 
      }, 
     error: function(xhr,err){ 
      alert("readyState: "+ xhr.readyState + "\nstatus: " + xhr.status + "\nerror:" + err); 
      alert("responseText: " + xhr.responseText); 
      } 
    }); 

关于PHP我有这样的:

<?php 
header('Content-Type: application/xml; charset=UTF-8'); 

... 
?> 

(与应用程序/ XML和文本/ xml的尝试都)

问题:

的工作原理是在谷歌浏览器的魅力,在IE9和Firefox上使用readyState失败:4,状态:200和错误:parsererror

编辑: 一小片样品XML的:

<?xml version='1.0' encoding='utf-8'?> 

    <Index Title="asdsad" isImg="0"> 
     <Categories> 
     <Cat Id="13"> 
      <Title>Movies</Title> 
     </Cat> 
     <Cat Id="15"> 
      <Title>Books</Title> 
     </Cat> 
     </Categories> 
     <Subject Id="141" Open="0"> 
     <Title>Subject A</Title> 
     <Resource Id="553" Level="2"> 
      <Title>Resource A1</Title> 
     </Resource> 
     </Subject> 
    </Index> 
+0

你能告诉我们XML吗? – TJHeuvel

回答

1

你确定你的编辑器设置编码为UTF-8和保存这个XML/PHP文件为UTF-8?

在firefox中使用firebug来检查产生你的电话的错误。也许只是一些无效的utf-8字符在你的xml中。

+0

我检查过,php是utf-8。但使用fiddler2和萤火虫,我看到有一些字符编码不正确......我不知道为什么。也许你是对的,但我找不到问题 – jose

+0

@jose:正如我之前所说的,确保你的编辑器/ ide或者你用来编程的字符编码是utf-8,你应该在常规设置下找到它。如果有些字符不是utf-8可能是由数据库/文件到达的某些数据引起的,或者不知道你正在解析什么来获取这个xml生成的。 –

1

这可能是jQuery是无法解析XML,但你的XMLParser的可能。

如果是这样,您可以使用complete函数处理任何结果。它将被调用是否有错误(网络错误解析错误)。

http://api.jquery.com/jQuery.ajax/