Ошибка Firefox «элемент не найден»

Во-первых, это не совсем идеальный способ настройки страницы, однако необходимо распространять скрипт в виде 1 файла.

У меня есть сценарий php в верхней части документа xhtml с javascript, и при определенных условиях использовать XHR для отправки строки запроса на саму страницу. Затем php вверху активируется и сохраняет переданный контент как сеанс, а затем убивает себя (exit ()). XHR является асинхронным и никогда не проверяется, чтобы увидеть, возвращает ли он содержимое.

Однако в Firefox 3 консоль ошибок выдает ошибкуno element found каждый раз, когда отправляется запрос XHR. Кроме того, если я использую выход, такой какexit('Done')Firefox генерирует синтаксическую ошибку (Done), как будто он вставляет ее в видимый DOM. Похоже, этого не происходит в Opera.

Есть ли лучший способ сохранить сеанс с уже созданной страницы HTML? Очевидно, я мог бы перевести XHR на другую страницу, но я бы предпочел оставить все это на одном скрипте. Firefox рассматривает запросы XHR к себе как обновления к DOM? Я не знаю, почему он отправляет эту ошибку.

Обновить Как я уже сказал, Firefox выдает ошибку только тогда, когда сделан запрос XHR. Страница является допустимым XHTML и работает отлично, без ошибок, если только запрос XHR не сделан к самой странице.

Мне было интересно, почему он посылает ошибку, потому что она действительно ничего не возвращает.

Вот фрагмент кода javascript, который делает ajax-запрос от объекта. Он создает объект XHR без функции обратного вызова и публикует информацию. Он работает правильно, когда не ссылается на ту же страницу.

 var saveState = { saveContent: function(updateActiveMenu) {
    var sendState = new ajaxObject(gV.url);
    if (!updateActiveMenu) {
        var storageContainer = document.getElementById("StorageContainer").innerHTML;
        var menu = document.getElementById("Nav").innerHTML;
        sendState.update("Containerstring="+urlencode(storageContainer)+"&Nav="+urlencode(menu)+"&Active="+gV.activeMenuItem, 'POST', true);    } }, }

И PHP делает это

if (isset($_REQUEST['Containerstring']) && isset($_REQUEST['Nav']) && isset($_REQUEST['Active'])) {
  $_SESSION['Containerarray'] = (saveContainer(regulateEscapes(urldecode($_REQUEST['Containerstring']))));
  $_SESSION['Navarray'] = (saveNav(regulateEscapes(urldecode($_REQUEST['Nav']))));
  $_SESSION['Active'] = $_REQUEST['Active'];
  exit('Done'); 
}

Я также знаю, что не должен использовать innerHTML, но это другая история

Ошибка в этом

Error: no element found
Source File: http://localhost/ajax.php?1244648094055 
Line: 1

Обратите внимание, что ошибка на странице php, которую я использую, ссылается на строку запроса, которая никогда не вызывается.

Ответы на вопрос(2)

Ваш ответ на вопрос