Загрузка фрагментов XHTML через AJAX с помощью jQuery

StackOverflow https://stackoverflow.com/questions/156133

  •  03-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь загрузить фрагменты разметки 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...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top