IE werkt in sommige gevallen niet met AJAX-calls

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Life
  • Registratie: Juli 2007
  • Laatst online: 09-12-2024
Ik heb een inlogsysteem op basis van AJAX voor een webapplicatie. Hij controleert of de combinatie van de inlogcode en het wachtwoord correct zijn om vervolgens een response te geven (bij fout: javascript melding / bij goed: form submit en cookies opslaan). Dit alles werkt super en heeft nooit problemen opgeleverd, ook niet in Internet Explorer.

Nu heb ik van een aantal mensen te horen gekregen dat op sommige computers het aanmelden niet wil lukken. Ze drukken op submit om vervolgens alleen een zandloper (mijn loadingscherm voor ajax-bestanden) in beeld te krijgen die oneindig lang doorloopt. Alsof de AJAX-pagina dus totaal niet wordt opgevraagd. Het vreemde is, is dat dit probleem op ongeveer 1 op de 20 computers voorkomt. Dit probleem gebeurt enkel in IE6 en 7. In Firefox is het probleem niet aanwezig.

Vandaag ben ik even langs geweest om de computers te controleren, het kon wellicht aan de instellingen liggen. Er stonden 2 computers naast elkaar waarvan ze identieke hardware/software hadden (ghost), terwijl 1 computer wel werkte en de ander niet. De settings in IE6 waren ook identiek. Verder is dit probleem niet alleen op mijn webapplicatie. De computers waarop mijn webapplicatie niet werkt, werkt een uitzending bekijken op uitzendinggemist.nl ook niet. Er komt gewoon een blank scherm (wel met gelaadde css, maar zonder inhoud) wanneer je een uitzending wilt zien.

Of het aan de cache ligt vraag ik me af, aangezien het anders de eerste keer wel zou moeten werken (dan wordt de pagina pas gecached). Het werkt vanaf het begin gelijk al niet.

Zie ik misschien iets over het hoofd waar het mogelijk aan kan liggen? Google heeft me weinig geholpen tot nu toe.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Sowieso verwacht ik dat het niet echt AJAX is (Asynchronous); in dat geval wil IE (en elke browser for that matter) nog wel eens 'freezen' als de response niet vlug genoeg komt. En ik zie maar al te vaak "AJAX" applicaties die doodleuk Synchroon werken waardoor de browser doodleuk gaat staan wachten na het vezenden van de request.

Maar zonder relevante(!!) code kunnen we natuurlijk weinig hierover zeggen.

[ Voor 10% gewijzigd door RobIII op 26-01-2009 17:14 ]

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


Acties:
  • 0 Henk 'm!

  • Life
  • Registratie: Juli 2007
  • Laatst online: 09-12-2024
Hieronder wat stukjes code

JavaScript aanroepen van de ajax-pagina functie
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
function checkForm2(formID, ajax_url)
{
    var forward_url = pathUrl + 'ajax/' + ajax_url + '.php';
    
    $('login_window').startWaiting();
    
    new Ajax.Updater('dummy_div', forward_url, 
    {
            asynchronous:true, 
            evalScripts:true, 
            parameters:Form.serialize(formID)
    });
}


Koppelen van de functie van de submit
code:
1
2
3
4
5
6
7
Event.observe(window, 'load', function() {
    $('loginID').focus();
    
  Event.observe('loginForm', 'submit', function(event) { 
        checkForm2('loginForm', 'login_check'); formFocus = false;
    });
});


Vervolgens staat er in de .php file op het eind: $('login_window').stopWaiting();
Dit wordt echter nooit uitgevoerd, waardoor ik mijn twijfels krijg of het PHP bestand wel aangeroepen wordt.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Dat ziet er wel aardig uit... geen idee hoe/wat verder, maar op 't oog ziet 't er goed uit.
Life schreef op maandag 26 januari 2009 @ 17:20:
Vervolgens staat er in de .php file op het eind: $('login_window').stopWaiting();
Dit wordt echter nooit uitgevoerd, waardoor ik mijn twijfels krijg of het PHP bestand wel aangeroepen wordt.
Heb je al gedebugged? (Debuggen: Hoe doe ik dat?) Schrijf op wat plekken in die .php even wat logging/tracing ergens naar toe zodat je kunt zien hoe ver het PHP script komt en welk 'executiepad' gevolgd wordt.

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


Acties:
  • 0 Henk 'm!

  • Life
  • Registratie: Juli 2007
  • Laatst online: 09-12-2024
Ik ga morgen proberen te debuggen. Ik kan namelijk niet vanaf mijn eigen computer debuggen, aangezien het probleem alleen bij bepaalde PC's is, waar ik op dit moment niet bij kan. Heb ook de volgende regel code veranderd om caching tegen te gaan.

code:
1
var forward_url = pathUrl + 'ajax/' + ajax_url + '.php?' + new Date().getTime();


Tevens heb ik dit toegevoegd aan het PHP-bestand:

code:
1
2
3
4
5
6
7
8
<?
//geen cache
header("Expires: Mon, 26 Jul 1990 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
?>


Hopelijk dat dit het probleem zal oplossen, maar het is enkel een gokje.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Life schreef op maandag 26 januari 2009 @ 17:41:
Ik ga morgen proberen te debuggen. Ik kan namelijk niet vanaf mijn eigen computer debuggen, aangezien het probleem alleen bij bepaalde PC's is, waar ik op dit moment niet bij kan.
:? Wat heeft dat met andere PC's te maken? Je moet juist de .php debuggen en die staat, help ik je hopen, op de server? :P

Pas de .php aan, zet helemaal bovenaan ergens een trace/log instructie en dan op stratigische plekken tot aan het punt waar je denkt dat 'ie niet meer aan komt.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
trace "Beginning..."
DoSomething()

trace "Initializing..."
Init()

if Foo
  trace "Entering foo..."
  DoFoo()
else
  trace "Entering bar..."
  DoBar()
end if

trace "Starting Blah..."
DoBlah()

trace "Doing something more..."
DoSomethingMore()

trace "Done!!"


Als je tracefile dan als volgt uit zietL
code:
1
2
3
4
Beginning...
Initializing...
Entering foo..
Starting Blah...

Dan weet je dat DoBlah ergens er mee kapt omdat "Doing something more" nooit verschijnt... en diezelfde traces voeg je dan in in DoBlah op strategische punten.

[ Voor 48% gewijzigd door RobIII op 26-01-2009 17:47 ]

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


Acties:
  • 0 Henk 'm!

  • Life
  • Registratie: Juli 2007
  • Laatst online: 09-12-2024
RobIII schreef op maandag 26 januari 2009 @ 17:42:
[...]

:? Wat heeft dat met andere PC's te maken? Je moet juist de .php debuggen en die staat, help ik je hopen, op de server? :P
Ik had het nogal vreemd verwoord, my bad :9 Ik bedoelde dat het gewoon op alle computers hier thuis perfect werkt. Ofwel, er zal niks vreemd uitkomen tijdens het debuggen (er wordt ook al een log bijgehouden met aanmeldingen). Als ik achter een computer zit waar het niet werkt, wellicht dat ik daar dan wel enige informatie uit kan halen tijdens het debuggen.

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Life schreef op maandag 26 januari 2009 @ 17:47:
[...]


Ik had het nogal vreemd verwoord, my bad :9 Ik bedoelde dat het gewoon op alle computers hier thuis perfect werkt.
Oh, duh :P Inderdaad :X My bad :)
Overigens kun je natuurlijk ook gewoon dezelfde AJAX-request doen (lees: dezelfde data sturen) vanuit je eigen PC om te zien waar (en of) het mis gaat. Gaat het met dezelfde data niet mis dan is de kans klein dat het aan de data zelf ligt en eerder aan (bijv.) IP-restricties, vage proxies, oude(re) browserversies, authenticatie die mis gaat, sessies die verloren gaan etc. etc. Gaat het met dezelde data wél mis dan zit 't dus eerder in het verwerken van die data en dan is het een kwestie van debuggen.

[ Voor 51% gewijzigd door RobIII op 26-01-2009 17:51 ]

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


Acties:
  • 0 Henk 'm!

  • Life
  • Registratie: Juli 2007
  • Laatst online: 09-12-2024
RobIII schreef op maandag 26 januari 2009 @ 17:48:
[...]

Oh, duh :P Inderdaad :X My bad :)
Overigens kun je natuurlijk ook gewoon dezelfde AJAX-request doen (lees: dezelfde data sturen) vanuit je eigen PC om te zien waar (en of) het mis gaat. Gaat het met dezelfde data niet mis dan is de kans klein dat het aan de data zelf ligt en eerder aan (bijv.) IP-restricties, vage proxies, oude(re) browserversies, authenticatie die mis gaat, sessies die verloren gaan etc. etc. Gaat het met dezelde data wél mis dan zit 't dus eerder in het verwerken van die data en dan is het een kwestie van debuggen.
Browserversie/IP-restrictie zal het niet zijn. De computers die ik testte (waarvan 1 wel werkte, en de ander niet) hadden precies dezelfde browserversie en ook hetzelfde IP-adres. Ook maak ik geen gebruik van sessions, maar cookies. Proxies werden ook niet gebruikt. Maar zo te zien hebben de 'foute' computers problemen met meerdere sites (uitzendinggemist werkt ook niet).

Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 22:06

BCC

Staan bij die machines dan niet gewoon de cookies uit?

[ Voor 72% gewijzigd door BCC op 26-01-2009 18:18 ]

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • apokalypse
  • Registratie: Augustus 2004
  • Laatst online: 21-09 10:21
Ik werk ook aan een veel gebruikte webapplicatie die opgezet is met ajax en deze ervaringen heb ik met IE:
  • Door timeout van laden externe (java)scripts, crasht javascript, en werkte AJAX niet meer. Maar toen kreeg ik ook een melding.
  • Ook problemen gehad met zulk soort vage problemen, het kwam toen door caching van de proxy (client kant). Enige mogelijkheid is dan je script geheel anders op te zetten (en veel te testen).
Wellicht heb je hier wat aan.

Acties:
  • 0 Henk 'm!

  • Life
  • Registratie: Juli 2007
  • Laatst online: 09-12-2024
BCC schreef op maandag 26 januari 2009 @ 18:17:
Staan bij die machines dan niet gewoon de cookies uit?
Nee, die staan gewoon aan. De 2 computers die ik testte hadden identieke settings. Tevens komt het niet eens aan bij de cookies, want die worden pas geset in het PHP-bestand dat niet geladen wordt.

@apokalypse

Er wordt geen proxy gebruikt en ook geen externe js. Alles staat op dezelfde host. Helaas :'(

Acties:
  • 0 Henk 'm!

  • MueR
  • Registratie: Januari 2004
  • Laatst online: 19:56

MueR

Admin Tweakers Discord

is niet lief

Zit je niet tegen de max 2 connections per host aan waar IE zich nog angstvallig aan vastklampt? Wat gebeurt er als je het op een subdomein laat doen?

Anyone who gets in between me and my morning coffee should be insecure.


Acties:
  • 0 Henk 'm!

  • Life
  • Registratie: Juli 2007
  • Laatst online: 09-12-2024
MueR schreef op maandag 26 januari 2009 @ 20:39:
Zit je niet tegen de max 2 connections per host aan waar IE zich nog angstvallig aan vastklampt? Wat gebeurt er als je het op een subdomein laat doen?
Nee, want ik draai het op een basisschool op dit moment, waar zo'n 20 computers staan. Er zijn echter zo'n 2 tot 3 die niet werken door deze bug. Iedereen heeft dus hetzelfde IP-adres, of bedoel je wat anders?

Het draait op dit moment ook al op een subdomein.

Acties:
  • 0 Henk 'm!

  • BCC
  • Registratie: Juli 2000
  • Laatst online: 22:06

BCC

Tja, dan blijft er weinig over dan de request-log tailen en kijken wat er over de lijn gaat.

Na betaling van een licentievergoeding van €1.000 verkrijgen bedrijven het recht om deze post te gebruiken voor het trainen van artificiële intelligentiesystemen.


Acties:
  • 0 Henk 'm!

  • Onbekend
  • Registratie: Juni 2005
  • Laatst online: 22-09 09:45

Onbekend

...

Ben je inmiddels al wat verder gekomen?

Staat er niet een of andere (dynamische) firewall verkeer te blokkeren?
Draaien op de identieke computers in Taskmanager ook de zelfde programma's?

Speel ook Balls Connect en Repeat


Acties:
  • 0 Henk 'm!

  • Life
  • Registratie: Juli 2007
  • Laatst online: 09-12-2024
Onbekend schreef op woensdag 28 januari 2009 @ 18:07:
Ben je inmiddels al wat verder gekomen?

Staat er niet een of andere (dynamische) firewall verkeer te blokkeren?
Draaien op de identieke computers in Taskmanager ook de zelfde programma's?
Morgen ga ik er weer langs om naar het probleem te kijken en zal dit onderzoeken. Ben helaas nog niet veel verder gekomen.

Acties:
  • 0 Henk 'm!

  • Life
  • Registratie: Juli 2007
  • Laatst online: 09-12-2024
Nou, vandaag heb ik dus weer de computers bekeken. In de TaskManager draaiden vrijwel dezelfde programmas (op 2 verschillen na, dat onderwijsapplicaties waren). Ik kon ze ook niet uitzetten i.v.m. admin-rechten. Maar ik hoorde ook van iemand dat bij haar thuis dezelfde fout aanwezig was, waarop deze applicaties niet geinstalleerd staan. De winXP-firewall stond op beiden computers uit. Tevens draaide er geen andere firewall in de achtergrond. Mijn cache-aanpassingen (in de .js. en .php files) mochten ook niet baten.

Ik zal vandaag wel even een aantal test-paginas maken met AJAX-requests om te zien of deze wel werken, afzonderlijk van de webapplicatie. Verder heb ik ook geen ideeën meer.
Pagina: 1