2011-10-10 34 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/