3 AjaxLoads

Pagina: 1
Acties:

  • Online-Gamer
  • Registratie: Juni 2005
  • Laatst online: 26-11-2025
Hallo,

Ik ben nog steeds met de webshop bezig (mijn vorige post was over de join query ;))..

Maargoed ik loop nu tegen een probleem op met mijn ajaxloads.
Ik wil 3 pagina's inladen met ajax.


Eerst artikelpagina.php, daarin staan 2 divs, 'topartikel' en 'bottomnav',

In 'topartikel' moet bandshirts.php laden en in 'bottomnav' moet nav.php laden.

Maar dit wilt hij niet doen,
Ik heb bijvoorbeeld dit als <a>:
HTML:
1
<a href="bandshirts.php?band=1" onclick="AjaxLoad('artikelpagina.php?get=blaat', 'content'); AjaxLoad('bandshirts.php?bandid=1', 'topartikel'); AjaxLoad('nav.php?type=bandshirts&amp;bandid=1', 'bottomnav'); return false;">Metallica</a>


De bovenstaande code is uiteraard gegenereerd door php.

M'n AjaxLoad ziet er zo uit:
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
/**
*    Ajax Load, hiermee kunnen we zonder refreshen een pagina aanroepen
**/
function AjaxLoad(dest, selout)
{
    idfile = selout;

    try
    {
        xmlhttp = window.XMLHttpRequest?new XMLHttpRequest():
        new ActiveXObject("Microsoft.XMLHTTP");
    }
    catch (e)
    {
        //
    }

    xmlhttp.onreadystatechange = triggered;
    dest = dest+'&f='+selout;
    xmlhttp.open("GET", dest);
    xmlhttp.send(null);
}
function triggered()
{
    if ((xmlhttp.readyState == 4) && (xmlhttp.status == 200))
    {
        document.getElementById(idfile).innerHTML = xmlhttp.responseText;
    }
} 



Het is zo, dat als ik alleen de artikelpagina.php wil laden, dat hij dat wel doet, maar zodra die andere 2 ajaxloads erbij komen doet hij het niet meer..

Ik heb ook net een try-catch bij triggered gedaan, daarbij krijg ik deze fout (meestal 4 keer):

TypeError: document.getElementById(idfile) has no properties

Weet iemand hoe dat komt? :)

Alvast bedankt.

Riny

  • Tsjilp
  • Registratie: November 2002
  • Niet online

Tsjilp

RS[I]ds

Waarschijnlijk worden de events van de eerste en tweede ajax calls overschreven door de 3e ajax call, waardoor alleen de laatste call wordt uitgevoerd.
Heb dit probleem zelf ook gehad, meerdere a-synchrone calls d.m.v dezelfde functie gaat niet altijd goed.

Raar... Is zo gek nog niet


  • Online-Gamer
  • Registratie: Juni 2005
  • Laatst online: 26-11-2025
Tsjilp schreef op vrijdag 14 juli 2006 @ 10:32:
Waarschijnlijk worden de events van de eerste en tweede ajax calls overschreven door de 3e ajax call, waardoor alleen de laatste call wordt uitgevoerd.
Heb dit probleem zelf ook gehad, meerdere a-synchrone calls d.m.v dezelfde functie gaat niet altijd goed.
Hmm okee bedankt voor je uitleg ik snap het,
heb je toevallig enig idee hoe ik dit het makkelijkst op kan lossen? :)

  • ReverendBizarre
  • Registratie: December 2001
  • Laatst online: 24-03-2021
Je AJAX code zo herschrijven dat je via één AJAX request meerdere 'pagina's' kan laden.

Trouwens het is misschien ook aan te raden om eens te kijken naar een bestaand AJAX framework in plaats van het zelf te implementeren. xajax is bijvoorbeeld een aardige library die simpel in gebruik is en waarmee je toch wat meer flexibiliteit hebt dan als je zelf op deze manier je events gaat afhandelen.

http://www.xajaxproject.org/

[ Voor 69% gewijzigd door ReverendBizarre op 14-07-2006 11:04 ]


  • cannibal
  • Registratie: Maart 2001
  • Laatst online: 12-02 17:08
Of zorgen voor een "array" van http-requests. Zodat aangemaakte requests niet worden overschreven.
Of zoeken naar een goede standaard ajax-library. Bijv. yahoo heeft ook ergens een vrij ajax-library en deze kon dacht ik wel meerdere requests aan.

  • Tsjilp
  • Registratie: November 2002
  • Niet online

Tsjilp

RS[I]ds

Het geheel object georienteerd maken. Zodat je voor elke call een nieuw object (met eigen onreadystatechange handler) kan maken. Vergeet echter niet je garbage een beetje te collecten.
Ook dit is niet de gouden oplossing. Het mooiste is om een soort wachtrij te maken, zodat call 2 & 3 pas worden uitgevoerd als call 1 is voltooid.
Er zijn een aantal frameworks die dit idd hebben. Ik zou echter niet voor een framework gaan, het is minder fun en zit meestal vol met features die je nooit gebruikt.

Raar... Is zo gek nog niet


  • cannibal
  • Registratie: Maart 2001
  • Laatst online: 12-02 17:08
maar als je voor je werk (maken webshop?) programmeert, moet je soms afwegingen maken en dan is minder uren maken en iets minder fun hebben door gebruik framework vaak een snelle keuze.

  • ReverendBizarre
  • Registratie: December 2001
  • Laatst online: 24-03-2021
Tsjilp schreef op vrijdag 14 juli 2006 @ 11:07:
Ik zou echter niet voor een framework gaan, het is minder fun en zit meestal vol met features die je nooit gebruikt.
Tsja... als je Javascript prutsen fun vindt...

Ik zou inderdaad als je met een webshop of iets dergelijks bezig gaat toch echt even kijken naar een AJAX implementatie die zichzelf een beetje bewezen heeft om redelijk goed te werken in plaats van zelf iets in elkaar te prutsen. Als je het toch zelf doet dan mag je het eerst wel uitvoerig gaan testen op alle verschillende soorten browsers want Javascript is verre van gestandaardiseerd (zeker op het gebied van het XMLHttpRequest).

  • Tsjilp
  • Registratie: November 2002
  • Niet online

Tsjilp

RS[I]ds

als je javascript prutsen vindt, dan zou ik me er eens wat meer in verdiepen. Toegegeven, het is soms een karwei om het in alle browsers werkend te krijgen, maar als je eenmaal bekend met met de syntax in de verschillende browsers is het echt niet zo'n ramp.

Raar... Is zo gek nog niet


  • ReverendBizarre
  • Registratie: December 2001
  • Laatst online: 24-03-2021
Ik heb de laatste vijf maanden aan een intranet wat grotendeels op AJAX is gebaseerd gewerkt dus ik denk dat ik me er meer dan genoeg in verdiept heb. Vergeleken met programmeren in echte programmeertalen als C++ en Java (waar ik me normaalgesproken mee bezig hou) vind ik Javascript prutsen ja. Als je voortdurend allerlei hacks moet inbouwen en je code moet de-standaardiseren om het maar op genoeg platformen draaiende te houden dan vind ik dat niet echt geweldig. Ik ben een nette programmeur en ik hou van gestructureerd en efficient programmeren. Met Javascript in de huidige situatie is dat vrijwel onmogelijk en erger ik me er meer an dan dat ik het 'fun' vind. Persoonlijke mening misschien dan.

  • Tsjilp
  • Registratie: November 2002
  • Niet online

Tsjilp

RS[I]ds

wat hacks betreft valt JS nog wel mee, dan is CSS een nog veel grotere hel.
Vandaag is de laatste dag van m'n JS project (CMS, DND, XML, XSL, XPath enz.) en kan niet wachten tot maandag... lekker Actionscripten, geen gezeik met browsers e.d. Al heeft AS helaas de meest belachelijke bugs en tekortkomingen.

Maar ik denk dat veel mensen de kracht van Javascript onderschatten. Vergeet niet dat het een scripttaal is, ipv een programmeertaal zoals C++ en Java dat zijn. (Beide overigens niet mee gewerkt, wel met ASP (C#/VB) (.Net 2.0))

Raar... Is zo gek nog niet


  • ReverendBizarre
  • Registratie: December 2001
  • Laatst online: 24-03-2021
Inderdaad, van CSS ben ik ook geen fan (eerlijkgezegd ben ik geen fan van welke huidige clientside web standaard dan ook, grotendeels om bovengenoemde redenen, maar dat terzijde).

Javascript is inderdaad in theorie best een krachtige script taal en ik heb zeker niks tegen script talen ofzo. Het is meer dat de afwijkende manier waarop de taal over verschillende browsers is geimplementeerd behoorlijk vervelend is. En ook de syntax van de taal zelf laat nog wel wat te wensen over op sommige vlakken. Zoals bijvoorheeld de OO notatie die nogal brak is.

Maar goed, ik denk dat we inmiddels een beetje offtopic aan het drijven zijn. :x

Om terug ontopic te komen, als het een hobby projectje is en je vind het leuk om te doen kan je inderdaag je eigen AJAX implementatie schrijven. Zoniet dan zou ik gewoon voor een bestaande implementatie gaan waar op z'n minst een aantal kinderziektes al zijn uitgehaald en die al geschreven is om op meerdere browsers goed te werken. xajax is nog maar op versie 0.2.4 maar werkt toch erg goed. Ik ben nog geen noemenswaardige bugs tegengekomen in ieder geval.

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:19
Client side zut hoort in /13. :)

Astu dreetje.

https://fgheysels.github.io/


  • Online-Gamer
  • Registratie: Juni 2005
  • Laatst online: 26-11-2025
Hartstikke bedankt iedereen!

Hij werkt nu goed, met arrays :)

Leer ik weer wat van! :)
Pagina: 1