Chargement de fragments XHTML sur AJAX avec jQuery
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>
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 ...