jjarekk
15.08.2010, 08:56:35
Witam,
Mój problem polega na wczytywaniu pliku za pomocą objektu XMLHttpRequest. No ale po koleji. Mam, krótki kod w którym testowałem jak zmieniać wygląd div'a za pomocą styli CSS. Zrobiłem to tak, że można zmieniac kolor np tekstu za pomocą JavaScriptu, następnie za pomocą XMLHttpRequest wysyłam dane POST'em do skryptu PHP, który generuje plik XML, który zawiera informacje o kolorze. Plik XML zapisywany jest na serwerze. Następnie gdy odswierzam strone, wywoluje funkcje JS, która tworzy znowu obiekt XMLHttpRequest, za pomocą, którego wczytuje informacje o kolorze i aplikuje je na stronce.
Problem polega na tym, że wygląd się nie zmienia. Plik xml na serwerze jest uaktualniany, jednak AJAX ciągle wczytuje stary plik czyli stare ustawienia sprzed nadpisania pliku XML. Najgorsze jest to, że czasem działa jak powinno, więc cieżko mi się połapać gdzie jest błąd. Może przegladrka (Mozilla) zapamiętuje sobie gdzieś ten plik XML i zamiast ściągać nowy, korzysta ciągle ze starego? Proszę o pomoc.
Nie napisałeś jak nadpisujesz i odczytujesz ten plik oraz z jakiej biblioteki korzystasz. Odśwież zawartość tego diva, i sprawdź czy nie masz w tej bibliotece możliwość wyłączenia cache (zapamiętywania stanu wykonywanego kodu).
jjarekk
15.08.2010, 12:49:32
Plik zapisuje za pomocą PHP zywczajnie, plik na serwerze nadpisuje sie prawidlowo, wyswietlam nawet pózniej na jednej stronie obie wersje tego pliku XML, tzn za pomoca xmlhttp.responseText gdy pobieram plik XML oraz gdy pobieram plik PHP, ktory za pomocą funkcji echo wyswietla ten plik XML. Wynik jest taki, że oba pliki mimo, że teoretycznie z tego samego źródła, różnią się (ten od xmlhttp.responseText jest nieaktualny). Narazie nie korzystam z żadnej biblioteki bo się uczę i moim zdaniem lepiej na początku robić wszystko samemu. Ale np teraz sobie odświerzyłem tą moją stronke i dane wreszcie się wczytały z tego faktycznie isniejącego na serwerze pliku. Ktoś wie jak wyłączyć cache bez biblioteki?
http://pl.wikipedia.org/wiki/XMLHttpRequest tutaj masz opis odnośnie zachowywania pamięci podręcznej, może coś z tego wyłuskasz.
jjarekk
15.08.2010, 22:58:02
Wielkie dzieki

bardzo mi to pomogło i rozwiązało problem. Chciałbym jescze zapytać o jedno - czy metodą POST da sie pobierać pliki XML, bo póki co dostaje błąd składni mimo, że plik sprawdziłem walidatorem.
Chodzi o to, że coś takiego ni jak nie przejdzie:
Kod
function startAjax(){
var xmlhttp = false;
if(window.XMLHttpRequest){
xmlhttp = new XMLHttpRequest();
}
else if(window.ActiveXObject){
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
return xmlhttp;
}
function test(){
var xmlhttp = startAjax();
if(xmlhttp){
xmlhttp.open("POST", "file.xml", true);
xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xmlhttp.overrideMimeType("text/xml");
xmlhttp.onreadystatechange = function(){
if(xmlhttp.status === 200 && xmlhttp.readyState === 4){
delete xmlhttp;
}
}
xmlhttp.send(null);
}
}