2008-10-01 8 views
9

J'essaie de charger des fragments de balisage XHTML en utilisant la fonction $.fn.load de jQuery, mais cela génère une erreur en essayant d'ajouter le nouveau balisage dans le DOM. J'ai réduit cela à la déclaration XML (<?xml...?>) - la vue fonctionne si je retourne un texte statique sans la déclaration. Je ne comprends pas pourquoi cela causerait un échec, ou si le blâme réside dans jQuery, Firefox ou mon code.Chargement de fragments XHTML sur AJAX avec jQuery

Comment insérer des fragments XHTML dans le DOM en utilisant jQuery?


L'utilisation de .get $ ne fonctionne pas - le rappel reçoit un objet Document, et lorsque je tente de l'insérer dans le DOM, je reçois l'erreur suivante:

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'); 

Une réponse de l'échantillon:

<?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> 

Répondre

15

Essayez plutôt (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'); 

Fondamentalement, .children() vous obtiendrez le nœud racine et remplacer le contenu de votre div avec elle . Je suppose que vous ne pouvez pas insérer un document XML avec la déclaration <? Xml dans le DOM ...