Mit AJAX Content nachladen

Hey, ich versuche gerade ein System zum laufen zu kriegen, mit dem der Content über Ajax in einen div nachgeladen wird. mein js sieht so aus:

[code]
function createRequestObject() {
var ro;
var browser = navigator.appName;
if(browser == “Microsoft Internet Explorer”){
ro = new ActiveXObject(“Microsoft.XMLHTTP”);
}else{
ro = new XMLHttpRequest();
}
return ro;
}

var http = createRequestObject();

function sndReq(action) {
http.open(‘get’, ‘rpc.php?action=’+action);
http.onreadystatechange = handleResponse;
http.send(null);
}

function handleResponse() {
if(http.readyState == 4){
var response = http.responseText;
var update = new Array();

    if(response.indexOf('|' != -1)) {
        update = response.split('|');
        document.getElementById(update[0]).innerHTML = update[1];
    }
}

}[/code]

d.h. wenn der link mit

angeklickt wird, wird an rpc.php als action “ziel” gesendet.
die rpc.php sieht so aus:

<?php
switch($_REQUEST['action']) {
    case 'news':
         echo "content|zieltext";
         break;
}
?>

erreicht wird damit, dass im div “content” das wort “zieltext” angezeigt wird.
nun soll statt dem text dort eine datei includet werden, wie mach ich das?

danke, LeeXX

Moin,

ich weiss nicht, ob es funktioniert (bin noch nicht so AJAX fit), aber versuch doch einfach das echo durch include zu ersetzen.

MfG

<?php switch($_REQUEST['action']) { case 'news': echo "content|".implode("\n",file('datei.html')); break; } ?>
eben statt datei.html jeweils deine Datei angeben.

@Steditor

[quote=“php.net”]Die Funktion file() ist identisch mit readfile(), außer dass die eingelesene Datei als Array zurückgegeben wird. Jedes Feld des Arrays korrespondiert mit einer Zeile der Datei. Der Zeilenumbruch bleibt erhalten.
http://de.php.net/manual/de/function.file.php[/quote]

Soll heißen, “\n” würde doppelte Zeilenumbrüche erzeugen. entweder ersten Parameter leer lassen oder file_get_contents verwenden.
in HTML würde es zwar keinen sichtbaren unterschied geben, aber sobald man nl2br oder ähnliches verwendet, würde der Fehler sichtbar werden.

<?php switch($_REQUEST['action']) { case 'news': echo "content|".file_get_contents('datei.html'); break; } ?>

:<

mfg Balmung

danke erstmal, das funktioniert soweit. allerdings natürlich nur mit html-dateien, weil php nicht mehr geparst wird. aber da bigt es doch ne möglichkeit, dass die seite im hintergrund geparst wird und dann die ausgabe als html includiert wird, oder?
und dann wäre noch die frage, ob zusätzlich zum includen der datei die id eines divs jew. bei klicken des links geändert werden kann?

danke. LeeXX

So hab das Problem inziwschen selber mit folgendem code in der rpc.php gelöst:

	case 'test':
		$titel = 'test';
		$dateiname = "$titel".".html";
		$datei = "test.php";
		ob_start();
		include($datei);
		$seiteninhalt = ob_get_clean();
		$textdatei = fopen ($dateiname, "a+");
		fwrite($textdatei, $seiteninhalt); 
		fclose($textdatei);
		echo "content|".file_get_contents("test.html");
		unlink($dateiname);
		break;

d.h.: der geparste php-code wird in eine html geschrieben, die wird nun per js nachgeladen und danach wieder gelöscht, so einfach gehts dann doch :smiley: :wink:
ciao

Moin,

also wenn dir das nur, um das PHP parsen geht …

eval(file_get_contents($datei));

Mehr zu eval

MfG
myPages

	case 'test':
		echo "content|";
		include("test.php");
		break;

und wie wäre es damit Oo??
zuerst erfolgt die ausgabe "content|"
Dann die Ausgabe des php-scripts aus dem Include… komplizierter muss man das doch nun wirklich nicht machen oder?

ich brauch jetzt ganz dringend das smiley, das sich den hammer gegen den kopf schlägt!!!

:smiley: manchmal zweifel ich echt an mir!
klar es geht natürlich so wie du es gesagt hast, ich idiot hab das include nur immer in die echo-zeile gesetzt, mit file_get_contents() geht das nämlich:

echo "content|".file_get_contents('test.html');

aber mit include natürlich nicht.

naja, ich steh jetzt noch vor 2 kleinen problemen, nämlich

  1. sollte nach möglichkeit noch die id eines bestimmten divs geändert werden.

und dann 2. wäre da noch das problem mit der history. hier: http://xhtmlforum.de/40747-einstieg-ajax-seite-nachladen.html#post299387 gibts zwar 2 verschieden tuts dafür, aber ich versteh nur bahnhof wenns drum geht das auch meine fall anzuwenden, könnte mit jemand den codeschnipsel für meinen fall anpassen?? ich muss noch dazu sagen, in js bin ich der absolute kackboon :smiley:

danke im voraus für eure hilfe :hail: :hail: :hail: LeeXX

:wink2:

ich hab da eine lösung gefunden:
http://code.google.com/p/reallysimplehistory/
„reallysimplehistory“ scheint wirklich sehr einfach zu benutzen zu sein.

nun steht da dass ich das das ganzemit folgendem code „einbinde“:

[code]

[/code]

yourListener muss ich ja ändern und bei //do something; muss ja ohl auch was rein. wie mach ich das? dieseiten werden über buttons, eingebunden mit:

href="javascript:sndReq('test')"

das ganze wird ja an die ajax.js geschickt, die ich schon gepostet habe.

kann mir da bitte jemand helfen!!
danke, leexx