PDA

View Full Version : [AJAX] problema explorer


Vecchia Spugna
11-08-2009, 09:29
Salve a tutti. Ho poca esperienza con ajax e mi sto cimentando con l'arduo compito di far funzionare il mio sito su tutti i browsers. Pensavo di esserci riuscito, invece avevo fatto i conti senza l'oste di casa Microsoft, il quale mi dà un problema stranissimo.

Premetto che il codice è strutturato in questo modo:
se è la prima volta che carico il sito allora carico un' intera pagina, altrimenti tramite onclick carico solo il frammento interno che mi interessa tramite innerHTML (perchè la importNode la ha solo FF).

Explorer mi fa caricare ogni pagina al massimo una volta: ad esempio se accedo alla home page, poi vado su chi siamo, poi su dove siamo, poi torno su chi siamo quest'ultima volta la funzione getpage viene invocata ma il frammento non viene sostituito.

do per scontato che il programma server-side funzioni dato che funziona su altri browsers

Non so se sto sbagliando sull'activex o sul modo di fare la richiesta. vi posto il codice:


var xmlhttp;
var documentRequested;

function init()
{
documentRequested = null;
buildRequest();
getEntirePage('home');
}

function buildRequest()
{
// informazioni sul nome del browser
browser = navigator.userAgent.toUpperCase();

// browser standard con supporto nativo
// non importa il tipo di browser
if(typeof(XMLHttpRequest) === "function" || typeof(XMLHttpRequest) === "object")
{
xmlhttp = new XMLHttpRequest();
}
// browser Internet Explorer
// � necessario filtrare la versione 4
else if(window.ActiveXObject && browser.indexOf("MSIE 4") < 0)
{
// la versione 6 di IE ha un nome differente
// per il tipo di oggetto ActiveX
if(browser.indexOf("MSIE 5") < 0)
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
else
{// le versioni 5 e 5.5 invece sfruttano lo stesso nome
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
}
}

function getEntirePage(pagename)
{
documentRequested = true;
var request = "server.php?document=" + pagename;
xmlhttp.open("GET", request, true);
xmlhttp.send(null);
xmlhttp.onreadystatechange = onReady;
}


function getPage(pagename)
{
documentRequested = false;
var request = "server.php?fragment=" + pagename;
xmlhttp.open("GET", request, true);
xmlhttp.send(null);
xmlhttp.onreadystatechange = onReady;
alert("getPage");
}

function onReady()
{
if(xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
if(documentRequested == true)
{
document.body.innerHTML = xmlhttp.responseText;
document.close;
}
else
{
var content = document.getElementById('contenuto').parentNode;
content.innerHTML = xmlhttp.responseText;
document.close;
}
}
}


Vi ringrazio anticipatamente sia per l'attenzione che per eventuali consigli

ciao ciao

CwNd
11-08-2009, 11:16
Io se fossi in te prenderei in considerazione di usare una qualsiasi libreria js (jquery, prototype, ecc ecc) in modo da non doverti preoccupare (e smadonnare) per questo genere di problemi.