Ajax browser cache hiba eseten IE7
Sziasztok!
Gyors kérdés IE7-tel kapcsolatban. Egy DIV-be töltök be AJAX segítségével egy másik oldalt.
Amennyiben bármilyen hiba történik, (mondjuk PHP dob valami hibát), akkor az IE7 menthetetlenül megjegyzi, sem refresh, sem reload nem segít rajta, a browser bezárásáig/újraindításáig úgy marad. Firefox természetesen lefuttatja újra a már javított queryt.
Példa:
Főoldal:
Betöltődő oldal (b.php):
Ugye a b.php-ban hiányzik az echo-t záró pontosvessző, esetünkben direkt. Ha ezt így betöltöm, akkor ugye hibát dob:
Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in C:\user\wamp\www\b.php on line 4
Ha javítom a hibát, a Firefox rendesen frissíti az immár okés queryt, de az IE7 (IE6 alatt nem néztem) "tárolja" a hibát. Érdekes módon, ha NINCS elrontva a b.php csak változtatom az adatot, azt az IE7 is szépen változtatja.
Kérdések a következők:
- ismer-e az Ajax bármilyen no-cache opciót? Vagy ez a hiba csak és kizárólag felhasználó oldalon orvosolható cache opciók megváltoztatásával?
- Más böngészőkben is előfordulhat ez?
ELőre is köszönök minden észrevételt!
Csaba
■ Gyors kérdés IE7-tel kapcsolatban. Egy DIV-be töltök be AJAX segítségével egy másik oldalt.
Amennyiben bármilyen hiba történik, (mondjuk PHP dob valami hibát), akkor az IE7 menthetetlenül megjegyzi, sem refresh, sem reload nem segít rajta, a browser bezárásáig/újraindításáig úgy marad. Firefox természetesen lefuttatja újra a már javított queryt.
Példa:
Főoldal:
<script type="text/javascript">
function makeRequest(url, id, MyMessage) {
var http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
//http_request.overrideMimeType('text/xml');
// See note below about this line
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Error creating XMLHttpRequest()');
return false;
}
http_request.onreadystatechange = function() {
var e = document.getElementById(id)
if (http_request.readyState == 4 && http_request.status == 200) {
e.innerHTML = http_request.responseText
}
else e.innerHTML = MyMessage
};
http_request.open('GET', url, true);
http_request.send(null);
}
</script>
<div id="celpont">
123
</div>
<hr />
<input type="button" value="Betolt" onclick='makeRequest("b.php", "celpont", "Toltom...")' />
function makeRequest(url, id, MyMessage) {
var http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
//http_request.overrideMimeType('text/xml');
// See note below about this line
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Error creating XMLHttpRequest()');
return false;
}
http_request.onreadystatechange = function() {
var e = document.getElementById(id)
if (http_request.readyState == 4 && http_request.status == 200) {
e.innerHTML = http_request.responseText
}
else e.innerHTML = MyMessage
};
http_request.open('GET', url, true);
http_request.send(null);
}
</script>
<div id="celpont">
123
</div>
<hr />
<input type="button" value="Betolt" onclick='makeRequest("b.php", "celpont", "Toltom...")' />
Betöltődő oldal (b.php):
<?php
echo "Elrontva"
echo "SUCCESS";
?>
echo "Elrontva"
echo "SUCCESS";
?>
Ugye a b.php-ban hiányzik az echo-t záró pontosvessző, esetünkben direkt. Ha ezt így betöltöm, akkor ugye hibát dob:
Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in C:\user\wamp\www\b.php on line 4
Ha javítom a hibát, a Firefox rendesen frissíti az immár okés queryt, de az IE7 (IE6 alatt nem néztem) "tárolja" a hibát. Érdekes módon, ha NINCS elrontva a b.php csak változtatom az adatot, azt az IE7 is szépen változtatja.
Kérdések a következők:
- ismer-e az Ajax bármilyen no-cache opciót? Vagy ez a hiba csak és kizárólag felhasználó oldalon orvosolható cache opciók megváltoztatásával?
- Más böngészőkben is előfordulhat ez?
ELőre is köszönök minden észrevételt!
Csaba
AJAX != voodoo
Header info
az alabbi metak vannak per pillanat beteve:
<META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE" />
<meta http-equiv="expires" content="0" />
<meta http-equiv="PRAGMA" content="NO-CACHE" />
Ha nem ezekre gondoltal, akkor pontosabban mire?
Egyebirant koszonom a gyors valaszt!
Csaba
HTTP header kell, nem meta