Ajax IE problemen

Pagina: 1
Acties:

  • kinderpindakaas
  • Registratie: Oktober 2006
  • Laatst online: 12-03-2024
Ik heb nu de volgende javascript/ajax code gemaakt:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//Browser specifieke XmlHttpRequest Object inladen
function getXmlHttpRequestObject() {
   if (window.XMLHttpRequest) {
      return new XMLHttpRequest();
   } else if(window.ActiveXObject) {
      return new ActiveXObject("Microsoft.XMLHTTP");
   } else {
      alert("Uw browser ondersteund geen Javascript of ActiveX");
   }
}


//De XmlHttpRequest object voor ontvangen van auto request
var LansData = getXmlHttpRequestObject();

function LansPageRefresh() {
   if (LansData.readyState == 4 || LansData.readyState == 0) {
      LansData.open("GET", 'ajax_update.php', true);
      LansData.onreadystatechange = handleDataSuggest;
      LansData.send(null);
      
   }      
}


//Word aangeroepen als ajax request terug komt
function handleDataSuggest() {
   if (LansData.readyState == 4) {
      var ss = document.getElementById('div_lansdata')
      ss.innerHTML = '';
      ss.innerHTML += LansData.responseText;
      
   }
}


In de hoofdpagina waar het resultaat moet komen heb ik een DIV container staan met id="div_lansdata" en een
code:
1
<body onLoad="javascript:setInterval('LansPageRefresh()',1000); LansPageRefresh();">

In firefox werkt alles helemaal perfect, alles wat ik aanpas aan ajax_update.php zie ik netjes terug in de div container.
Echter in IE6 heb ik een hele vervelende fout.
Als ik namelijk IE6 vers opstart en dan naar website ga, dan geeft hij inderdaad het resultaat ook weer in de div container, echter deze info refreshed nu niet. En zelfs als ik met F5 de hele page refresh, dan blijft hij oude info geven.
Lijkt wel alsof hij enkel iets met die body onload regel doet als je IE6 opnieuw opstart en de website bezoekt, daarna lijkt het erop dat hij onload blijft negeren zelfs bij een F5.

Heeft iemand een idee?

  • SchizoDuckie
  • Registratie: April 2001
  • Laatst online: 18-02 23:12

SchizoDuckie

Kwaak

Haal je javascript Pseudo URL handler eens weg om te beginnen, verder zou ik een standaard ajax objectje gebruiekn van iemand ipv zelf het wiel opnieuw uit te vinden.

Stop uploading passwords to Github!


  • NoFearWizz
  • Registratie: Oktober 2002
  • Laatst online: 26-11 16:19
Probeer dit eens. Ik gebruik dit zelf voor mijn ajax scripts (heb hem aangepast aan jouw scripts):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
    var xmlHttp;

//Browser specifieke XmlHttpRequest Object inladen
    function GetXmlHttpObject(handler)
    { 
        var objXmlHttp=null
    
        if (navigator.userAgent.indexOf("Opera")>=0)
        {
            alert("This script doesn't work in Opera") 
            return 
        }
        if (navigator.userAgent.indexOf("MSIE")>=0)
        { 
            var strName="Msxml2.XMLHTTP"
            if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
            {
                strName="Microsoft.XMLHTTP"
            } 
            try
            { 
                objXmlHttp=new ActiveXObject(strName)
                objXmlHttp.onreadystatechange=handler 
                return objXmlHttp
            } 
            catch(e)
            { 
                alert("Error. Scripting for ActiveX might be disabled") 
                return 
            } 
        } 
        if (navigator.userAgent.indexOf("Mozilla")>=0)
        {
            objXmlHttp=new XMLHttpRequest()
            objXmlHttp.onload=handler
            objXmlHttp.onerror=handler 
            return objXmlHttp
        }
    } 


//De XmlHttpRequest object voor ontvangen van auto request
    function LansPageRefresh()
    { 
        xmlHttp = GetXmlHttpObject(stateChangedInfo);
        xmlHttp.open("GET", 'ajax_update.php', true);
        xmlHttp.send(null);
    } 
    
//Word aangeroepen als ajax request terug komt
    function stateChangedInfo() 
    { 
        if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
        { 
              var ss = document.getElementById('div_lansdata')
              if (ss)
              {
                  ss.innerHTML = xmlHttp.responseText;
              }
        } 
    }


Hoop dat je er wat aan hebt

Verwijderd

Je kunt caching voorkomen door een random nummer of timestamp achter je URL te hangen:
JavaScript:
1
LansData.open("GET", 'ajax_update.php?t=' + new Date().valueOf(), true);

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
NoFearWizz schreef op woensdag 11 juli 2007 @ 16:06:
Probeer dit eens. Ik gebruik dit zelf voor mijn ajax scripts (heb hem aangepast aan jouw scripts):
Je hoeft niet te schreeuwen ;)
Daarnaast: waarom die ranzige browsercheck? En waarom zou Ajax niet werken in Opera?

Wat ik persoonlijk veel mooier vind:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
if (!window.XMLHttpRequest) {
    window.XMLHttpRequest = function() {
        // http://blogs.msdn.com/xmlteam/archive/2006/10/23/using-the-right-version-of-msxml-in-internet-explorer.aspx
        var types = ['MSXML2.XMLHTTP.6.0', 'MSXML2.XMLHTTP.3.0'];

        for (var i = 0; i < types.length; i++) {
            try {
                return new ActiveXObject(types[i]);
            } catch(e) {}
        }
        return undefined;
    }
}

Met dank aan crisp overigens ;)

[ Voor 41% gewijzigd door RobIII op 11-07-2007 17:02 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • kinderpindakaas
  • Registratie: Oktober 2006
  • Laatst online: 12-03-2024
De volgende regel code heeft alles tot nu toe opgelost:
code:
1
LansData.open("GET", 'ajax_update.php?t=' + new Date().valueOf(), true);


Duidelijk dus een caching probleem in IE

  • kinderpindakaas
  • Registratie: Oktober 2006
  • Laatst online: 12-03-2024
Ik heb nu nog wel een probleem dat het google maps kaartje dat ik op de pagina ajax_update.php aanmaak, niet wilt doorgeven via de AJAX routine.
Iemand een idee?
Pagina: 1