很久以前,我在這個example之後建立了AJAX搜索模型。我改變了一些東西 - 整個請求過程現在通過jquery處理。但所請求的PHP文件基本相同。我添加了一個多字節兼容性標頭...MIME類型爲「application/xhtml + xml」的嚴格XHTML:AJAX/PHP的DOMDocument類失敗
header("content-type: text/html; charset=utf-8");
但除此之外:少許編輯。它工作得很好。直到最近:我想切換到嚴格的XHTML,並一直在改變我的HTML代碼。我的意思是嚴格的:我甚至將MIME類型改爲「application/xhtml + xml」。唯一的問題:切換到此類型時,AJAX搜索不再有效。問題不在於jquery,它是PHP的DOMDocument類。下面是PHP文件的中央簡化部分,其通過jQuery請求
if (mb_strlen($searchTerm) > 2) {
$xmlDoc = new DOMDocument('1.0', 'UTF-8');
$xmlDoc->load('data.xml');
echo 'Results:<br />';
$x = $xmlDoc->getElementsByTagName('data');
for($i=0; $i<($x->length); $i++) {
$name=$x->item($i)->getElementsByTagName('name');
if ($name->item(0)->nodeType==1) {
$name = $name->item(0)->childNodes->item(0)->nodeValue;
if (mb_stristr($name,$searchTerm)) echo $name .'<br />';
}
}
} else {
echo 'Searchterm to short';
}
問題不在於與jquery,因爲,當我輸入2個字母到其觸發AJAX請求,則返回的文本輸入字段是'Searchterm to short'(所以請求基本上是有用的)。現在出現令人困惑的部分:當我輸入一個應該在XML文件中找到的單詞時,不會返回任何內容:沒有錯誤,沒有文本,沒有任何內容。當我輸入一個不在XML文件中的單詞時,至少返回'Results:
'。所以看起來:PHP以某種方式循環瀏覽XML文件。當我將整個項目切換到內容類型「header('content-type:text/html; charset = utf-8')」時,一切都再次正常工作。我是否也必須更改所請求的PHP文件的MIME類型 - 我已經嘗試過不同的變體而沒有成功。是否必須以某種方式更改DOM文檔對象才能使其在嚴格的XHTML環境中工作......?
幹得好。繼續並接受你自己的答案,因爲它回答你的問題。 – mc10