2009-01-27 8 views
61

Ich habe eine HTML-Seite mit einer typischen Struktur:mit Inhalten via AJAX abgerufen

<html> 
    <head> 
    <script src="..." ></script> 
    <style>...</style> 
    </head> 
    <body> 
    content 
    </body> 
    <script> 
    var success_callback = function(data) { 
     // REPLACE PAGE CONTENT & STRUCTURE WITH "data" 
    } 
    ajax(url, params, success_callback); 
    </script> 
</html> 

Halten Sie es für möglich? Ich habe bereits versucht, dem HTML-Tag eine ID zu geben und $(id).replace(data); ohne Erfolg zu tun.

Fragen Sie mich nicht warum, aber das ist was ich brauche (Ich arbeite mit einer speziellen "Mashup Builder" Seite ... es ist eine lange Geschichte).

EDIT: ich habe vergessen zu sagen, dass Skripte in den empfangenen Inhalt, auch externe Skripte enthalten mit <script src="..."> ausgeführt werden müssen.

+3

Ich würde wirklich interessieren, mehr über die Anforderungen zu erfahren. Ich kann mir nichts vorstellen, was so etwas erfordern würde. –

+1

welche js Bibliothek benutzen Sie? um es einzuschließen. – geowa4

Antwort

7

Sie könnten versuchen,

document.getElementById(id).innerHTML = ajax_response 
11

Hier ist zu tun, wie es in Prototype zu tun: $(id).update(data)

Und jQuery: $('#id').replaceWith(data)

Aber document.getElementById(id).innerHTML=data sollte auch funktionieren.

EDIT: Prototype und jQuery automatisch Scripts für Sie auswerten.

4

Ich nehme an, Sie ähnliche jQuery oder etwas verwenden. Wenn Sie jQuery verwenden, dann sollten folgende Arbeiten:

<html> 
<head> 
    <script src="jquery.js" type="text/javascript"></script> 
</head> 
<body> 
    content 
</body> 
<script type="text/javascript"> 
    $("body").load(url); 
</script> 
</html> 
4

Können Sie nicht nur versuchen, den Körper zufrieden mit dem document.body Handler zu ersetzen?

wenn Ihre Seite ist dies:

<html> 
<body> 
blablabla 
<script type="text/javascript"> 
document.body.innerHTML="hi!"; 
</script> 
</body> 
</html> 

einfach die document.body verwenden, den Körper zu ersetzen.

Das funktioniert für mich. Der gesamte Inhalt des BODY-Tags wird durch das von Ihnen angegebene innerHTML ersetzt. Wenn Sie sogar das HTML-Tag und alle Childs ändern müssen, sollten Sie überprüfen, welche Tags des 'Dokuments'. sind dazu in der Lage.

Ein Beispiel mit Javascript Scripting im Inneren:

<html> 
<body> 
blablabla 
<script type="text/javascript"> 
var changeme = "<button onClick=\"document.bgColor = \'#000000\'\">click</button>"; 
document.body.innerHTML=changeme; 
</script> 
</body> 

diese Weise können Sie Javascript Scripting in den neuen Inhalt zu tun. Vergessen Sie nicht, alle doppelten und einfachen Anführungszeichen zu umgehen, oder es wird nicht funktionieren. Es kann in JavaScript ausgeführt werden, indem Sie Ihren Code durchlaufen und einen umgekehrten Schrägstrich vor allen Sin- geln und doppelten Anführungszeichen setzen.

Denken Sie daran, dass serverseitige Scripting wie PHP nicht auf diese Weise funktioniert. Da PHP serverseitiges Scripting ist, muss es vor dem Laden einer Seite verarbeitet werden.Javascript ist eine Sprache, die auf Client-Seite funktioniert und somit die erneute Verarbeitung von PHP-Code nicht aktivieren kann. mit

+0

Ja, Sie haben fast Recht, aber externe Skripte mit einem