Загрузка фрагментов XHTML через AJAX с помощью jQuery
Вопрос
Я пытаюсь загрузить фрагменты разметки XHTML с помощью jQuery $.fn.load
функция, но она выдает ошибку при попытке добавить новую разметку в DOM.Я сузил это до XML-объявления (<?xml...?>
) -- представление работает, если я возвращаю статический текст без объявления.Я не понимаю, почему это может привести к сбою, или вина лежит на jQuery, Firefox или моем коде.
Как я должен вставлять фрагменты XHTML в DOM с помощью jQuery?
Использование $.get не работает - обратный вызов получает Document
объект, и когда я пытаюсь вставить его в DOM, я получаю следующую ошибку:
uncaught exception: Node cannot be inserted at the specified point in the hierarchy (NS_ERROR_DOM_HIERARCHY_REQUEST_ERR)
http://localhost:8000/static/1222832186/pixra/script/jquery-1.2.6.js
Line 257
Это мой код:
$body = $("#div-to-fill");
$.get ("/testfile.xhtml", undefined, function (data)
{
console.debug ("data = %o", data); // data = Document
$body.children ().replaceWith (data); // error
}, 'xml');
Примерный ответ:
<?xml version="1.0" encoding="UTF-8"?>
<div xmlns="http://www.w3.org/1999/xhtml">
<form action="/gallery/image/edit-description/11529/" method="post">
<div>content here</div>
</form>
</div>
Решение
Попробуйте это вместо этого (я только что провел быстрый тест, и, кажется, это сработало):
$body = $("#div-to-fill");
$.get ("/testfile.xhtml", function (data)
{
$body.html($(data).children());
}, 'xml');
По сути, .children() получит вам корневой узел и заменит им содержимое вашего div.Я предполагаю, что вы не можете точно вставить xml-документ с <?xml declaration into the DOM...