2008-10-01 6 views
9

Ich versuche, Fragmente von XHTML-Markup mit jQuery $.fn.load Funktion laden, aber es wird ein Fehler beim Hinzufügen der neuen Markup in das DOM ausgelöst. Ich habe dies auf die XML-Deklaration eingegrenzt (<?xml...?>) - die Ansicht funktioniert, wenn ich statischen Text ohne die Deklaration zurückgebe. Ich verstehe nicht, warum dies zu Fehlern führen würde, oder ob die Schuld in jQuery, Firefox oder meinem Code liegt.Loading XHTML-Fragmente über AJAX mit jQuery

Wie soll ich XHTML-Fragmente mit jQuery in das DOM einfügen?


$ .get Mit funktioniert nicht - der Rückruf erhält ein Document Objekt, und wenn ich versuche, es in das DOM einfügen, erhalte ich folgende Fehlermeldung:

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 

Das ist mein Code:

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

Eine Probe Antwort:

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

Antwort

15

Versuchen Sie stattdessen (ich habe nur einen kurzen Test und es scheint zu funktionieren):

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

Grundsätzlich .children() werden Sie den Wurzelknoten erhalten und den Inhalt des div mit ersetzen . Ich denke, Sie können nicht genau ein XML-Dokument mit der <? XML-Deklaration in das DOM ...

einfügen