Строгий XHTML с MIME-типом «application / xhtml + xml»: класс DOMDocument в AJAX / PHP не работает - PullRequest
0 голосов
/ 18 ноября 2011

Я смоделировал поиск 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 ...?

1 Ответ

4 голосов
/ 18 ноября 2011

Я довольно смущен.Вывод запроса AJAX нарушил строгие правила XHTML.Просто не видел этого.Вышеприведенный пример будет работать без проблем, потому что я удалил часть некорректного HTML-кода.Однако: проблема решена, собственная глупость подтверждена ...

...