2011-11-17 53 views
0

很久以前,我在這個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環境中工作......?

回答

4

我很尷尬。 AJAX請求輸出違反了嚴格的XHTML規則。只是沒有看到它。上面的例子會毫無問題地運行,因爲我已經刪除了一些有缺陷的HTML代碼。然而:問題解決了,自己的愚蠢證實了...

+0

幹得好。繼續並接受你自己的答案,因爲它回答你的問題。 – mc10

相關問題