Ajax will nicht

PHP, Ajax, CSS, HTML, Javascript
Eben für die wirklich Harten, die alles selber machen.
Antworten
Benutzeravatar
Sonic2007
Beiträge: 46
Registriert: Mi 17.Mai, 2006 19:50

Ajax will nicht

Beitrag von Sonic2007 »

Hallo,
ich habe folgendes Problem mit Ajax:
Ich habe folgenden Code: (siehe Anhang)
wenn ich nun jedoch eine anfrage folgendermaßen ausführe:

Code: Alles auswählen

<div id="test"></div>
<script type="text/javascript">
<!--
ajax_submit("test.txt","test");
//-->
</script>
Die .js habe ich so eingebungen:

Code: Alles auswählen

<script type="text/javascript" src="ajax/ajax.js"></script>
dieser Teil befindet sich im Head-Bereich.
erscheint in dem Div durchgehend: Laden...
Die Datei text.txt ist im gleichem Verzeichnis und enthält folgendes:
test
Dateianhänge
fehler.rar
(525 Bytes) 239-mal heruntergeladen
Zuletzt geändert von Sonic2007 am Fr 01.Jun, 2007 15:02, insgesamt 2-mal geändert.
Benutzeravatar
bce
Beiträge: 858
Registriert: Do 14.Okt, 2004 18:46
Kontaktdaten:

Beitrag von bce »

wieso fügst du den code in einer rar-datei an? ist doch umständlich, wenn man sie erst laden und dann entpacken muss. deshalb gibts ja eigentlich die code-boxen :eek:

was soll das skript bewirken?

eine ausgabe "laden" solange die seite noch lädt nehm ich mal an...

edit: du initialisierst die variable ajax mit

Code: Alles auswählen

var ajax = null;
hmm.. ich kenne es mit

Code: Alles auswählen

var ajax = false;
Zuletzt geändert von bce am Fr 01.Jun, 2007 15:22, insgesamt 1-mal geändert.
Benutzeravatar
Sonic2007
Beiträge: 46
Registriert: Mi 17.Mai, 2006 19:50

Beitrag von Sonic2007 »

Also: Für den Code war es etwas zu lang gewesen...
Jedenfalls will ich per funktion ajax_submit("test.txt","test");
in dem Div test die Datei test.txt einfügen (also den inhalt).
Solange Ajax die Seite aber noch nicht geladen hat soll in dem
Div der Text Laden ... stehen. Jedoch bleibt das Laden stehen und es ändert sich nichts...
Es ist so als bleibt Ajax bei dem State 1 stehen und kommt nicht weiter.
Zuletzt geändert von Sonic2007 am Fr 01.Jun, 2007 15:25, insgesamt 2-mal geändert.
Benutzeravatar
bce
Beiträge: 858
Registriert: Do 14.Okt, 2004 18:46
Kontaktdaten:

Beitrag von bce »

ist das im IE genauso wie in firefox?
Benutzeravatar
Sonic2007
Beiträge: 46
Registriert: Mi 17.Mai, 2006 19:50

Beitrag von Sonic2007 »

Ja. Ist in Opera und IE genauso wie in firefox
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Naja, abgesehen vom fehlenden Sinn dieser Aktion fehlt es hier auch an einem Auslöser, der den Code erneut ausführt.

Was passiert denn?
Die Seite wird geladen und "ajax" wird erstellt.
Dann erfolgt das "ajax_submit", welches sagt (gemäß der Abfolge): Öffne das Dokument, lade den Inhalt und schliesse es wieder.
Dann wird abgeprüft, ob der Responce fertig und gültig ist, also 4 und wirft ansonsten "Laden..." aus.
Da aber der Status 4 nicht erreicht wird, da das Script hier aufhört, bleibt es dann auch bei dieser Anzeige.
Versuche daher mal diese ajax_submit:

Code: Alles auswählen

// Anfrage senden
function ajax_submit(page,id)
{
    ajax.open('GET',page,true); // GET anstelle get
    eval("ajax.onreadystatechange = "+ajax_reaction(id));
    ajax.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=iso-8859-1');
    ajax.send(null);
    return true;
}
Diese führt den onreadystatechange als "Befehl" und nicht als Zuordnung aus, was ungleich effektiver ist.
Dazu wird auch ein gültiger Header gesendet, sonst kann das Script ebenfalls hier abbrechen.
Und zurückspringen muss das Script ebenfalls, sonst würde ja die Seite auch "anhalten".

Soweit ich das also jetzt sehen kann (ungetestet), sollte das Event damit eintreten können und der Text der Datei angezeigt werden...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Sonic2007
Beiträge: 46
Registriert: Mi 17.Mai, 2006 19:50

Beitrag von Sonic2007 »

hmm genau das gleiche.
Edit: Fehler gefunden. Bei der Rückgabefunktion dürfen keine Parameter übergeben werden. Sonst werden Daten falsch übergeben.
Benutzeravatar
bce
Beiträge: 858
Registriert: Do 14.Okt, 2004 18:46
Kontaktdaten:

Beitrag von bce »

und wie schaut das ganze nun aus.. nur zur info
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Bei der Rückgabefunktion dürfen keine Parameter übergeben werden. Sonst werden Daten falsch übergeben
???
Meinst Du ajax.send(null)?
Das hängt dann nur vom Browser ab...
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Benutzeravatar
Sonic2007
Beiträge: 46
Registriert: Mi 17.Mai, 2006 19:50

Beitrag von Sonic2007 »

ajax_reaction(id) <- Das mein ich. Ohne (id) klappt es.
Benutzeravatar
oxpus
Administrator
Beiträge: 28735
Registriert: Mo 27.Jan, 2003 22:13
Wohnort: Bad Wildungen
Kontaktdaten:

Beitrag von oxpus »

Ach so!
Ja, klar, danke für den Wink mit dem gesamten Zaun!
ID ist ja global bereits vorhanden und würde durch diesen Aufruf nochmals neu geschrieben, also damit falsch sein.

Hätte ich auch dran denken müssen.....
Karsten Ude
-={ Das Mädchen für alles }=-
Kein Support per Messenger, Email oder PN! Unaufgeforderte Nachrichten werden ignoriert!
No support per Messenger, Email or PM. Each unasked message will be ignored!
Antworten