Toon posts:

[AJAX / JS] probleem in Firefox

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

ik heb een diagnose systeem gemaakt waarbij men een 'boom/tree' kan aanmaken.
In opera en IE werkt alles goed, maar in Firefox heb ik echter een probleem.

Het gaat om de volgende foutmelding:
code:
1
2
3
4
Fout: uncaught exception: [Exception... "Component returned failure code: 0x80004005
(NS_ERROR_FAILURE) [nsIXMLHttpRequest.open]"  nsresult: "0x80004005 
(NS_ERROR_FAILURE)"  location: "JS frame :: 
http://linkje/vragenOnderhoud.php :: ajaxOpslaanRelatie :: line 366"  data: no]


Dit is de code om lijn 366 heen:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
//opslaan van een nieuwe relatie in de database
function ajaxOpslaanRelatie(antwoord, begin, eind, types, bjBegin, bjEind, positieIn){
    var link = 'opslaanRelatie.php?antwoord='+antwoord+'&beginId='+begin+'
&eindId='+eind+'&types='+types+'&bjBegin='+bjBegin+'
&bjEind='+bjEind+"&positie="+positieIn;
    request.open('get', link, true);//dit is lijn 366, waar het dus fout gaat.
    request.onreadystatechange = function(){
        if(request.readyState == 4)
            nieuweRelatieNaPauze(antwoord, begin, eind, positieIn);
    };
    request.send('');
}

Deze functie wordt aangeroepen door zo'n stukje code:
JavaScript:
1
opener.nieuweRelatie(antwoord, begin, eind, bouwjaar_begin, bouwjaar_eind, stringTypes, positie);

En nieuweRelatie(..) ziet er zo uit:
JavaScript:
1
2
3
4
5
6
function nieuweRelatie(antwoord, begin, eind, bouwjaar_begin, bouwjaar_eind, stringTypes, positieIn){
    if((begin!=eind)&&getObj("v"+begin)!=null&&getObj("v"+eind)!=null){
        ajaxOpslaanRelatie(antwoord, begin, eind, stringTypes, bouwjaar_begin, bouwjaar_eind, positieIn);
    }else
        alert('Het begin en het einde zijn gelijk, dit is niet mogelijk.');
}

Het wordt dus vanuit een popup aangeroepen.

Heel leuk natuurlijk, maar hoe ziet de request eruit?
zo:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
//aanmaken van de XMLHttpRequest.
function makeObject(){
    var x;
    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        x = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE
        x = new ActiveXObject("Microsoft.XMLHTTP");
    }
    return x
}

var request = makeObject();

Ik denk dat de fout ergens in de request zit, want ook bij andere soortgelijke functies krijg ik een foutmelding.
Maar hoe kan ik deze aanpassen zonder dat de functionaliteit in de andere browsers wordt aangepast / veranderd?

Helaas kan ik jullie geen voorbeeld website aanbieden omdat het een beveiligd gedeelte is van een beschermde website.

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

Je connectie lijkt op het eerste ogenblik goed. Heb je het ook al geprobeerd met een simpele versie van je functie (om uit te sluiten dat het je connectie functie is)?

[rml]crisp in "[ XML/AJAX] XMLHttpRequest: MSIE vs FireF..."[/rml] heeft ook een mooie connectie functie (er zitten er trouwens meer in dat topic).

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Verwijderd

Topicstarter
Ik ben even verder wezen kijken, en ik kom nu nog een verschil tussen werkende en niet werkende functies tegen.
Deze namelijk:
JavaScript:
1
request.send('');

en:
JavaScript:
1
request.send(null);


Zou dat ook een mogelijke oorzaak kunnen zijn?
En wat is het verschil?
Want '' is volgens mij ook null of niet?

Ik heb een 'tijdelijke' oplossing gevonden.
In elke functie die ik gebruik maak ik een nieuwe request aan.
Voor eventuele referentie:
theone.nu
En de oplossing welke deze man ook heeft gebruikt:
oplossing

Maar mooi vind ik het geenzins.
Maar voor mij is dit wel de oplossing

[ Voor 42% gewijzigd door Verwijderd op 18-01-2006 11:57 ]


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

crisp

Devver

Pixelated

Wat ik begrijp is dat je meerdere malen een request doet, maar daarvoor gebruik maakt van hetzelfde request object?
Dat kan wel, maar dan moet je zeker weten dat het voorgaande request afgehandeld is en anders zal je hem expliciet moeten afbreken voor Moz/Ff. Zie ook http://www.quirksmode.org...09/xmlhttp_notes_a_1.html

Intentionally left blank


Verwijderd

Topicstarter
Dat is inderdaad het geval.
Oke, dan is het probleem nu opgelost, en behalve dat ook bekend.
Wat ik me we afvraag is waarom Moz/FF dit probleem heeft en zowel IE als Opera niet.

Verwijderd

Verwijderd schreef op woensdag 18 januari 2006 @ 14:51:
Dat is inderdaad het geval.
Oke, dan is het probleem nu opgelost, en behalve dat ook bekend.
Wat ik me we afvraag is waarom Moz/FF dit probleem heeft en zowel IE als Opera niet.
Omdat FireFox gewoon ku.. omdat het nu eenmaal zo werkt. Je kunt gebruik maken van een queue systeem of meerdere requests aanmaken maar wel in een eigen object.
Pagina: 1