jQuery - AJAX aktualisiert sich nicht |
InformaTiger
Tripel-As
Dabei seit: 19.02.2013
Beiträge: 228
Herkunft: Südtirol
|
|
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
__________________ Why do Java developers wear glasses? Because they can't C#
|
|
02.05.2014 16:29 |
|
|
Airblader
Doppel-As
Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München
|
|
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);
});
}); |
|
__________________ The best thing about a boolean is that even if you're wrong, you're only off by a bit.
|
|
02.05.2014 17:14 |
|
|
InformaTiger
Tripel-As
Dabei seit: 19.02.2013
Beiträge: 228
Herkunft: Südtirol
|
|
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
__________________ Why do Java developers wear glasses? Because they can't C#
|
|
02.05.2014 17:21 |
|
|
Airblader
Doppel-As
Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München
|
|
Immerhin funktioniert's nun!
__________________ The best thing about a boolean is that even if you're wrong, you're only off by a bit.
|
|
02.05.2014 17:24 |
|
|
Airblader
Doppel-As
Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München
|
|
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.
In Javascript ist diese Klammernsetzung jedenfalls sehr unüblich, typischerweise sieht man dort eher
code: |
1:
2:
3:
|
function foo() {
console.log("Hello World");
} |
|
__________________ The best thing about a boolean is that even if you're wrong, you're only off by a bit.
|
|
02.05.2014 18:39 |
|
|
InformaTiger
Tripel-As
Dabei seit: 19.02.2013
Beiträge: 228
Herkunft: Südtirol
|
|
Achso, ok. Ich verstehe, ich empfinde meine Klammernsetzung aber als übersichtlicher. Jedenfalls für mein Auge...
Mfg
InformaTiger
__________________ Why do Java developers wear glasses? Because they can't C#
|
|
02.05.2014 18:51 |
|
|
Airblader
Doppel-As
Dabei seit: 03.03.2013
Beiträge: 138
Herkunft: München
|
|
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.
__________________ The best thing about a boolean is that even if you're wrong, you're only off by a bit.
|
|
02.05.2014 18:54 |
|
|
|