jQuery.ajax выдает «TypeError: Невозможно прочитать свойство« documentElement »с нулем» на сервере, но не локально - PullRequest
4 голосов
/ 03 февраля 2010

У меня проблема с моим кодом jQuery на http://alpha.spherecat1.com/,, но локальная копия работает нормально. Как вы можете видеть, если вы посещаете сайт сейчас, вызов ajax выдает следующую ошибку:

"Ошибка типа: невозможно прочитать свойство 'documentElement' со значением NULL"

Я проверил, перепроверил и перегрузил все, что смог придумать. В документации говорилось, что я отправляю правильный тип MIME, но безрезультатно. Вот оскорбительный код:

function changePageAJAX(newPage, method)
{
    if (method != "replace")
    {
        window.location.hash = newPage;
    }
    newPage = newPage.substring(1); // Remove the hash symbol.
    title = "SphereCat1.com | " + fixCase(newPage.replace(/\//g, " > ")); // Set the window title.
    newPage = "ajax/" + newPage + ".html"; // Add path.
    if (newPage == currentPage)
    {
        return; // Don't let them load the current page again.
    }
    $.ajax({ // jQuery makes me feel like a code ninja.
        url: newPage,
        dataType: "xml",
        success: function(data, status, xmlhttp){ renderPage(xmlhttp); },
        error: function(xmlhttp, status, error){ alert(error); renderPage(xmlhttp); }
    });
    document.title = title;
    currentPage = newPage;
}

Затем происходит рендеринг страницы в div. Страницы, которые он захватывает, видны в папке / ajax на предыдущем URL. Будем весьма благодарны за любую помощь, которую вы можете оказать!

1 Ответ

7 голосов
/ 03 февраля 2010

Ошибка вызвана вызовом ajax:

error: function(xmlhttp, status, error)...

Так как вы ожидаете XML dataType, вызов URL «ajax / home.html» вернет mime-тип «text / html». Возможно, вы захотите полностью опустить dataType для интеллектуального предположения в jQuery. Например ::100100 *

$.ajax({ // jQuery makes me feel like a code ninja.
  url: newPage,
  success: function(data, status, xmlhttp){ renderPage(xmlhttp); },
  error: function(xmlhttp, status, error){ alert(error); renderPage(xmlhttp); }
});

У вас также есть следующее alert() в appendCSS, которое, как я полагаю, предназначено для отладки?:

function appendCSS(filename)
{
    alert(filename);
    if (filename != null)
    {
        $("head").append("<link rel='stylesheet' id='extracss' href='"+filename+"' type='text/css' />");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...