Я смоделировал поиск AJAX после этого примера давным-давно.Я изменил некоторые вещи - весь процесс запроса теперь обрабатывается с помощью jquery.Но запрашиваемый PHP-файл в основном такой же.Я добавил заголовок для совместимости с несколькими байтами ...
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, по крайней мере, «Результаты:'возвращается.Похоже, PHP каким-то образом просматривает XML-файл.Когда я переключаюсь со всем проектом на тип контента "header ('content-type: text / html; charset = utf-8')", все снова работает нормально.Должен ли я изменить тип mime запрашиваемого файла PHP тоже - я уже пробовал разные варианты без успеха.Нужно ли как-то изменять объект DOMdocument, чтобы он работал в строгой среде XHTML ...?