當我用$.ajax像PHP送出要求一個XML文件的時候
照道理他回傳的是一個XMLHttpRequest,然後可以用他得到XML文本
var html = $.ajax({
url: "ajaxOutput.php",
async: false
,type: "GET"
}
).responseXML;
但是卻發生了responseXML總是為null的狀況,後來查了一下HTTP封包
他似乎被解讀成HTML文本 所以無法轉換
因為responseText可以正確抓到值
後來看了一下的我PHP程式碼
<?php
echo '<?xml version="1.0"?>';
echo '<book>';
echo 'jQuery';
echo '</book>';
?>
沒什麼問題,但是卻沒辦法讀取,找了一些範例好像也都是這樣寫
讀純xml也很正常
var html = $.ajax({
url: "test.xml",
async: false
,type: "GET"
}
).responseXML;
那倒底問題是出在哪裡
後來又看了一下jQuery文件
dataType (String) : (預設值:智能判斷xml或者html)預期服務器返回的資料類型。如果不指定,jQuery 將自動根據 HTTP 包 MIME 資訊返回 responseXML 或 responseText,並作為回調函數參數傳遞,可用值:
這樣就我就明白了,他會根據MIME來判斷這份文件是什麼類型
也就是必須透過Content-type告訴AJAX他是什麼東西,因此我必須告訴他我是一個XML文件
因此我只要設定一下header就能解決了 如下
<?php
header('Content-type: application/xml');
echo '<?xml version="1.0"?>';
echo '<book>';
echo 'jQuery';
echo '</book>';
?>
沒有留言:
張貼留言