[js - ajax] Pagina wisselt in IE maar enkele keren

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 10-04 22:52

Dorgaldir

Creature of the web

Topicstarter
Grtz,

Ik ben bezig met een pagina die dmv ajax herladen word. Ik heb dus een scriptje geschreven, en achter de buttons een js functie gehangen om dus de pagina in een bepaalde div te laden.
Werkt lekker in FF, Chrome, usw... Maar in IE kan ik maar 2 of 3 keer van pagina wisselen en dan doet ie het niet meer. Tot ik de browsercache leeg maak. Dus ik denk dat er ergens een variabele ofzoiets niet doet wat ie moet doen.

Allereerst de testcase.

En enkele relevante stukjes code:

button in LinkMenu.php
PHP:
1
print '<button name="button" value="home" OnClick="loadPage(\'home\');" type="submit">Home</button><br/>';


script ajax.js
JavaScript:
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
var httpObject = null;
// Get the HTTP Object
function getHTTPObject(){
    if (window.ActiveXObject) return new ActiveXObject("Microsoft.XMLHTTP");
    else if (window.XMLHttpRequest) return new XMLHttpRequest();
    else {
        alert("Your browser does not support AJAX.");
        return null;
    }
}

// Change the value of the outputText field
function setOutput(){
    if(httpObject.readyState == 4){
        var tekst = httpObject.responseText;
        document.getElementById('maincol').innerHTML = tekst;
    }
}

// Implement business logic
function loadPage(page){
    
    httpObject = getHTTPObject();
    if (httpObject != null) {
        httpObject.open("GET", "page.php?pag="+page, true);
        httpObject.send(null);
        httpObject.onreadystatechange = setOutput;
    }
}


index pagina
PHP:
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8" />
    <link href="css/div.css" rel="stylesheet" type="text/css" />
    <title></title>
    <script type="text/javascript" src="JS/ajax.js"></script>
    <script type="text/javascript" src="JS/ajaxZoekKlant.js"></script>
    
</head>
<body>
<div id="pagewidth" >
    <div id="header" > 
        <div id="hl"></div>
        <div id="hm">V2.0</div> 
        <div id="hr"></div>
    </div>
            <div id="wrapper" class="clearfix"> 
            <div id="maincol">
            <?php
                include('Home.php');    
            ?>
            </div>
            <div id="leftcol" > <?php include('LinkMenu.php')?> </div>
</div>
    <div id="footer" > &copy; 2010  
    </div>
</div>
</body>
</html>


Ik geraak er echt niet uit waarom de boel niet werkt |:( kan iemand me in de juiste richting duwen?

EDIT: Blijkbaar is het niet op alle computers :'( uit pure frustratie ben ik even op een andere pc gaan testen en daar werkt het wel.
Beide win 7, IE8.
Degene waar het niet op werkt is wel een 32-bit en de andere een 64-bit... Wat merken jullie? Want als het ENKEL en ALLEEN deze pc is dan boeit het natuurlijk niet, maar als er nog zijn waar de boel niet op werkt dan moet er echt wel ergens een fout zijn oid.

[ Voor 7% gewijzigd door Dorgaldir op 01-04-2010 15:42 ]

Just me


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:53

crisp

Devver

Pixelated

Zet de onreadystatechange eens voor de send() - lijkt me namelijk een racecondition wanneer het resultaat al lokaal gecached is.

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • _Thanatos_
  • Registratie: Januari 2001
  • Laatst online: 05-09 14:39

_Thanatos_

Ja, en kaal

Of gebruik een library (jquery bijvoorbeeld) zodat je zeker weet dat het niet aan je zelf-gebrouwen AJAX-wrapperdinges ligt. Een dergelijke library is vast ook nog wel voor andere dingen handig, dus kwaad kan het niet.

日本!🎌


Acties:
  • 0 Henk 'm!

  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 10-04 22:52

Dorgaldir

Creature of the web

Topicstarter
crisp schreef op donderdag 01 april 2010 @ 22:50:
Zet de onreadystatechange eens voor de send() - lijkt me namelijk een racecondition wanneer het resultaat al lokaal gecached is.
Het lijkt nu wel te werken :)
Ik heb geen idee waarom dit wel werkt en het vorige niet :p maar het werkt das het belangrijkste.
Dank in ieder geval.
_Thanatos_ schreef op vrijdag 02 april 2010 @ 03:07:
Of gebruik een library (jquery bijvoorbeeld) zodat je zeker weet dat het niet aan je zelf-gebrouwen AJAX-wrapperdinges ligt. Een dergelijke library is vast ook nog wel voor andere dingen handig, dus kwaad kan het niet.
Is een optie, maar ik ben opzich niet zo'n fan van libs als het niet nodig is, eerst liever zelf wat proberen er uit te geraken, met libs kan iedereen programmeren :p

Just me


Acties:
  • 0 Henk 'm!

  • Tharulerz
  • Registratie: April 2009
  • Laatst online: 10-04 05:16
Galen schreef op vrijdag 02 april 2010 @ 13:57:
[...]

met libs kan iedereen programmeren :p
Tot je baas jou ontslaat omdat je collega alles 3 keer sneller doet als jou?

Libraries niet gebruiken omdat ze snel en gemakkelijk zijn is dom.

Acties:
  • 0 Henk 'm!

  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 10-04 22:52

Dorgaldir

Creature of the web

Topicstarter
Tharulerz schreef op vrijdag 02 april 2010 @ 14:01:
[...]


Tot je baas jou ontslaat omdat je collega alles 3 keer sneller doet als jou?

Libraries niet gebruiken omdat ze snel en gemakkelijk zijn is dom.
Het voordeel is dan dat ik in een KMO werk, als enige it'er.
En als ze mij ontslagen wens ik de volgende veel geluk met de weg terug te vinden in al die code die ik hem dan achter laat :p

En ik zeg toch niet dat ik ze niet gebruik, ik zeg dat ik ze liever niet gebruik, wan hoe makkelijk en snel ze ook zijn, als je maar enkele functies nodig hebt is het onnodig belastend voor je systeem, kan je evengoed even snel een functietje schrijven.

Just me


Acties:
  • 0 Henk 'm!

Verwijderd

Galen schreef op vrijdag 02 april 2010 @ 15:59:
En als ze mij ontslagen wens ik de volgende veel geluk met de weg terug te vinden in al die code die ik hem dan achter laat :P
:N

Acties:
  • 0 Henk 'm!

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Galen schreef op vrijdag 02 april 2010 @ 15:59:
Het voordeel is dan dat ik in een KMO werk, als enige it'er.
En als ze mij ontslagen wens ik de volgende veel geluk met de weg terug te vinden in al die code die ik hem dan achter laat :p
Lijkt me niet dat je uitsluitend voor de webpagina wil blijven werken daar, of wel? :?
En ik zeg toch niet dat ik ze niet gebruik, ik zeg dat ik ze liever niet gebruik, wan hoe makkelijk en snel ze ook zijn, als je maar enkele functies nodig hebt is het onnodig belastend voor je systeem, kan je evengoed even snel een functietje schrijven.
Dus uitsluiten of het probleem in jouw code zit boeit je niet?

Afgezien van het feit dat het (zeker in het kader van de toegankelijkheid van de website) gebruik van AJAX / JS om een webpagina te laden not done is. Stel nou ik heb in mijn browser Javascript uit- of niet toestaan of er géén ondersteuning voor hebben, zoals Lynx, dan hang je.

Maak voor een link daarom een normale anchor, middels de a-tag.

Acties:
  • 0 Henk 'm!

  • Saeverix
  • Registratie: Maart 2002
  • Laatst online: 11-09 13:30
@CptChaos

Voor een publieke site moet je inderdaad niet afhankelijk zijn van Javascript.

Voor bijvoorbeeld een admin page (waar de site van de TS op lijkt) is het een ander verhaal. Daar kun je eisen aan stellen voor de gebruikers.
Alhoewel ik ook niet snap waarom je een admin site publiekelijk toegankelijk maakt, maar dat is een ander verhaal...

Verder kan ik de site niet testen, omdat ik geen login gegevens heb.

Ik zit nu ook eens de broncode van het inlogscherm te bekijken. En ik merk om dat daar de HTML, HEAD en BODY tags missen. Ik weet niet hoe afhankelijk de DOM hier van is, maar het lijkt me niet goed.

[ Voor 19% gewijzigd door Saeverix op 02-04-2010 17:00 ]

People who live in glass houses shouldn't throw stones.


Acties:
  • 0 Henk 'm!

  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 10-04 22:52

Dorgaldir

Creature of the web

Topicstarter
Het gaat ook niet over een publieke site, het gaat om een webapplicatie voor het kantoor. Dus js afdwingen is niet zo moeilijk. Gaat maar over een 15 tal gebruikers.
CptChaos schreef op vrijdag 02 april 2010 @ 16:44:
[...]
Lijkt me niet dat je uitsluitend voor de webpagina wil blijven werken daar, of wel? :?
[...]
Dus uitsluiten of het probleem in jouw code zit boeit je niet?

Afgezien van het feit dat het (zeker in het kader van de toegankelijkheid van de website) gebruik van AJAX / JS om een webpagina te laden not done is. Stel nou ik heb in mijn browser Javascript uit- of niet toestaan of er géén ondersteuning voor hebben, zoals Lynx, dan hang je.

Maak voor een link daarom een normale anchor, middels de a-tag.
Opzich wil ik wel weten of de fout in mijn code zit of niet, maar tot mijn groot spijt is daar geen tijd voor.
Ik ben in dienst genomen 2 weken nadat ze de applicatie nodig hadden. Mij erin gegooit en gezegd, "maak iets dat werkt en maak het snel".

Het is mijn eerste job in it dus ik heb braaf ja gezegd en de job genomen. De software zit nog vol met bugs, maar tot ik de tijd krijg om opnieuw te beginnen is daar simpelweg geen tijd voor, om deze reden is er dus ook bitter weinig gedocumenteerd.
Ik sta ook niet enkel in voor de website en webapplicatie, ik heb ook enkele administratieve taken, voor het geval het druk is op kantoor, of als er tijdelijk niet veel programeer werk is. Dus mijn jobzekerheid ben ik niet bang voor.
Saeverix schreef op vrijdag 02 april 2010 @ 16:56:

Verder kan ik de site niet testen, omdat ik geen login gegevens heb.

Ik zit nu ook eens de broncode van het inlogscherm te bekijken. En ik merk om dat daar de HTML, HEAD en BODY tags missen. Ik weet niet hoe afhankelijk de DOM hier van is, maar het lijkt me niet goed.
Ik had de inlog even uitgeschakeld, maar omdat het terug werkte had ik hem terug ingeschakeld.

En het zou kunnen dat mijn inlog pagina die tags mist, ik zal het eens controleren als ik terug op het werk ben. Bedankt daarvoor in ieder geval :p, als je eenmaal ingelogd bent zijn die tags wel present, maar het zou wel kunnen dat ik ze daar vergeten ben.

Just me


Acties:
  • 0 Henk 'm!

  • Tharulerz
  • Registratie: April 2009
  • Laatst online: 10-04 05:16
No offense, maar aan je commentaar te merken ben je nog een groene junior.

Je zegt zelf dat het snel moet klaar zijn, maar je vertikt het om libraries te gebruiken, terwijl die (jquery is de enige die ik gebruik) sneller ontwikkelen, minder kans op fouten (zeker cross browser) en gewoon veel eter leesbaar zijn.

En "onnodig belastend voor je systeem": ik heb er sterk mijn twijfels bij of jou functies even performant zijn als die van jquery, in eender welke browser.

Acties:
  • 0 Henk 'm!

  • Dorgaldir
  • Registratie: September 2009
  • Laatst online: 10-04 22:52

Dorgaldir

Creature of the web

Topicstarter
Dat punt zal ik open laten. Ik heb inderdaad geen idee wat het performantst is maar ik heb toen ik begon een keuze gemaakt, of dat de juiste was zal ik in het midden laten, maar de keuze is daarom nog wel altijd gemaakt. Als jij zegt dat jquery zo goed is dan zal ik die misschien binnenkort eens bekijken, misschien overtuigt het me wel.
En ik ben inderdaad nog een beginner, zoals ik al zei is dit mijn eerste job als programmeur. Ik sta daarom ook open voor commentaar. Ik kan er alleen maar uit leren.

Just me


Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 00:53

crisp

Devver

Pixelated

Tharulerz schreef op vrijdag 02 april 2010 @ 19:18:
No offense, maar aan je commentaar te merken ben je nog een groene junior.

Je zegt zelf dat het snel moet klaar zijn, maar je vertikt het om libraries te gebruiken, terwijl die (jquery is de enige die ik gebruik) sneller ontwikkelen, minder kans op fouten (zeker cross browser) en gewoon veel eter leesbaar zijn.

En "onnodig belastend voor je systeem": ik heb er sterk mijn twijfels bij of jou functies even performant zijn als die van jquery, in eender welke browser.
Om eerlijk te zijn zou ik een ieder die geinteresseerd is in clientside webdevelopment vooral juist aanraden om niet met een library te beginnen maar eerst eens met 'plain old' javascript te werken. Vergeet niet dat zeker een library als jQuery een compleet ander dogma is dan 'puur' javascript. jQuery moet je ook eerst leren, en eerlijk gezegd is dat makkelijker als je al ervaring hebt met javascript zelf.

Daarbij vind ik het altijd behoorlijk inpertinent om meteen met een specifieke library te schermen. Laat de topicstarter daar zelf maar naar kijken en vergelijken (en dan is javascript kennis ook weer een pré om een gedegen en onderbouwde keuze te maken).

Persoonlijk is jQuery bijvoorbeeld absoluut niet mijn ding; ik vind het rommelig en onduidelijk, te veel 'magic' (puur omwille van zo kort mogelijke syntax) en zeker als je nog weinig ervaring hebt met jQuery en niet alle ins en outs kent zal je eerder juist inefficiënte code schrijven...

De hele drang naar het gebruik van libraries en het neerbuigend doen naar mensen die de moeite willen doen om zelf dingen uit te vinden is mij al een tijd een doorn in het oog. Het gebruik van libraries en standaard oplossingen maakt lui, werkt beperkend en zorgt voor eenheidsworst. Daarbij zie ik steeds meer sites waar wel 2 of soms meer complete JS-libraries geinclude worden wat vaak een teken is van onwetendheid van de developers (afgezien van de problemen die het kan veroorzaken). Kijk bijvoorbeeld eens naar webwereld waar ze standaard gebruik maken van prototype, maar enkel om click-tracking op uitgaande links te doen compleet jQuery nog eens wordt ingeladen 8)7 Voor zoiets triviaals zou je nog niet eens een library nodig moeten hebben, maar ook hier zijn duidelijk developers aan het werk die zonder library niets meer kunnen...
Saeverix schreef op vrijdag 02 april 2010 @ 16:56:
[...]
Ik zit nu ook eens de broncode van het inlogscherm te bekijken. En ik merk om dat daar de HTML, HEAD en BODY tags missen. Ik weet niet hoe afhankelijk de DOM hier van is, maar het lijkt me niet goed.
och, die zijn allen optioneel in HTML ;)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Tharulerz
  • Registratie: April 2009
  • Laatst online: 10-04 05:16
Je haalt een goed punt aan Crisp, maar het is niet omdat er slechte developers zijn die inderdaad klungelen met libraries dat je het gebruik van libraries niet mag aanmoedigen.

Maar het blijft een feit dat als je weet wat de functies van jquery doen, je ze evengoed kan gebruiken, omdat je WEET dat ze werken, ze sneller zijn en sneller developen.

Ik ben zelf absolute voorstander van libraries, maar dat is misschien inderdaad omdat ik weet hoe het zonder ook kan (veel code, veel cross browser checks, etc), en als je dan ineens het gemak van jquery ontdekt, dan kan je niet meer zonder.

Een ding dat ik trouwens altijd probeer is om op elke site waar ik jquery gebruik (en dat zijn er wel een aantal), de jquery altijd op te halen van http://ajax.googleapis.co...query/1.3.2/jquery.min.js . Er is ergens een groep die hiervoor ijver (weet niet meer waar), dat als elke developer dit zou doen, elke client dit lokaal gecached zou hebben staan en 1 van de pijnpunten van jquery (de initiele load) deels zou worden vermindert.

Het blijft dus een kwestie van voorkeur, en je zal altijd voor en tegenstanders hebben, maar uiteindelijk zijn er geen argumenten TEGEN een library gebruiken, tenzij domheid of smaak :)
Pagina: 1