jQuery - AJAX aktualisiert sich nicht

Neue Frage »

Auf diesen Beitrag antworten »
InformaTiger jQuery - AJAX aktualisiert sich nicht

Hallo,
ich hoffe es gibt hier im Board einige Webfreaks die mir bei folgendem Problem weiterhelfen können:

Ich habe mir vor einiger Zeit eine Art CMS-System selbst geschrieben. Mittels PHP kann ich mir den Text (Code) aus einer Textbox in eine Datei schreiben. Das funktioniert soweit nur wenn ich die Datei mittels jQuery wieder einlesen möchte, bekomme ich immer die Alte Version obwohl in die Datei richtig geschrieben wurde. Auch beim aktualisieren der Website bleibt die Alte Version trotz dem Löschen des Caches.

Der Code zum Laden per AJAX:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
$("#open_file").change(function()
	{
		var xmlhttp;
		if (window.XMLHttpRequest)
		{// code for IE7+, Firefox, Chrome, Opera, Safari
			xmlhttp=new XMLHttpRequest();
		}
		else
		{// code for IE6, IE5
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}
		
		xmlhttp.open("GET", $(this).val(), false);
		xmlhttp.setRequestHeader("If-Modified-Since", $.now());
		xmlhttp.send();
		
		$("#editor").val(xmlhttp.responseText);
	});


PS: der Code funktionierte Vorher geschätzte 2 Monate.

Mfg
InformaTiger
 
Auf diesen Beitrag antworten »
Airblader

Wenn du schon jQuery nutzt, wieso dann nicht gleich richtig? jQuery kommt mit einem cross-browser-kompatiblem $.get() bzw. $.ajax.

Ich weiß auch nicht, warum du dir diese Linux-Kernel-Klammernsetzung antust, aber in Javascript ist sie enorm unüblich. Für eine synchrone Vorgehensweise sehe ich übrigens auch keine Argumente. Also erstmal umschreiben:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
$("#open_file").change(function () {
    $.ajax({
        type: "GET",
        url: $(this).val(),
        ifModified: true
    }).done(function (data) {
        $('#editor').val(data);
    });
});


Für dein Problem könnte es verschiedene Ursachen geben – der Server könnte den Header einfach ignorieren, zum Beispiel. Etwas typischer ist, dass deine Schreiboperation einfach noch nicht fertig ist, wenn du versuchst das Dokument zu laden.

Solltest du letzten Punkt definitiv ausschließen können, könnte ein Cache-Problem vorliegen. Versuche doch einfach mal das:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
$("#open_file").change(function () {
    $.ajax({
        type: "GET",
        url: $(this).val(),
        cache: false
    }).done(function (data) {
        $('#editor').val(data);
    });
});
Auf diesen Beitrag antworten »
InformaTiger

Ich habe den XMLHttpRequest verwendet weil ich es in einem Tutorial gesehen hatte. Offensichtlich aber der falsche Weg gewesen, Punkt eins hat die Funktion gleich versaut wie meine Version. Allerdings funktioniert Punkt 2, ich hatte aber auch des Öfteren versucht den Cache zu löschen keine Ahnung wiso es dann immer noch nicht ging.

Danke.

Mfg
InformaTiger
Auf diesen Beitrag antworten »
Airblader

Immerhin funktioniert's nun! Daumen hoch
 
Auf diesen Beitrag antworten »
InformaTiger

Und wenn wir schon dabei sind, was du mit Linux-Kernel-Klammersetzung meinst leuchtet mir nicht ein.

Mfg
InformaTiger
Auf diesen Beitrag antworten »
Airblader

Ich kannte die Klammernsetzung

code:
1:
2:
3:
4:
function foo()
    {
        console.log("Hello World");
    }


vor allem von einigen Beispieln aus dem Linux-Kernel. Ich habe aber eben mal nachgeschaut – das müssen falsch formatierte Patches gewesein sein, der Linux-Kernel-Coding-Style ist anders.

Den Grund, Klammern so zu setzen, sehe ich nicht und ich empfinde ihn als unglaublich platzverschwendend. Ist aber am Ende die Sache des Entwicklers bzw. des Teams. Augenzwinkern In Javascript ist diese Klammernsetzung jedenfalls sehr unüblich, typischerweise sieht man dort eher

code:
1:
2:
3:
function foo() {
    console.log("Hello World");
}
Auf diesen Beitrag antworten »
InformaTiger

Achso, ok. Ich verstehe, ich empfinde meine Klammernsetzung aber als übersichtlicher. Jedenfalls für mein Auge...

Mfg
InformaTiger
Auf diesen Beitrag antworten »
Airblader

Wie gesagt, Code-Style ist eine eigene Entscheidung, auch wenn es sprachenübliche Konventionen gibt. Wichtig ist nicht welchen Codestyle man wählt, sondern dass man diesen dann konsistent verwendet. Daumen hoch
 
Neue Frage »
Antworten »


Verwandte Themen

Die Beliebtesten »
Die Größten »
Die Neuesten »