|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Oct 2002
Città: Porto Sant' Elpidio (ap)
Messaggi: 789
|
[AJAX] problema explorer
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: 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; } } } ciao ciao
__________________
Abit aw9-d max, pentium code 2 duo E7300, sapphire radeon hd 4750, corasir 650W |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Jun 2007
Città: Milano
Messaggi: 413
|
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.
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 01:29.