Question

J'essaie de charger des fragments du balisage XHTML à l'aide de la fonction $.fn.load de jQuery, mais une erreur s'est produite lors de la tentative d'ajout du nouveau balisage dans le DOM. J'ai réduit cela à la déclaration XML (<?xml...?>) - la vue fonctionne si je renvoie du texte statique sans la déclaration. Je ne comprends pas pourquoi cela causerait un échec, ou si le blâme repose sur jQuery, Firefox ou mon code.

Comment dois-je insérer des fragments XHTML dans le DOM à l'aide de jQuery?

L'utilisation de $ .get ne fonctionne pas - le rappel reçoit un objet Document et lorsque j'essaie de l'insérer dans le DOM, le message d'erreur suivant s'affiche:

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

Ceci est mon code:

$body = $("#div-to-fill");
$.get ("/testfile.xhtml", undefined, function (data)
{
    console.debug ("data = %o", data); // data = Document
    $body.children ().replaceWith (data); // error
}, 'xml');

Exemple de réponse:

<?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>
Était-ce utile?

La solution

Essayez plutôt ceci (je viens de faire un test rapide et il semble fonctionner):

$body = $("#div-to-fill");
$.get ("/testfile.xhtml", function (data)
{
    $body.html($(data).children());
}, 'xml');

En gros, .children () vous donnera le nœud racine et remplacera le contenu de votre div par celui-ci. Je suppose que vous ne pouvez pas insérer exactement un document XML avec la déclaration & Lt;? Xml dans le DOM ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top