Toon posts:

[AJAX] onComplete zelf invullen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,

Ik ben bezig met het gebruik van AJAX. Ik ben een blackjack-tafel aan het maken. Ik weet dat ze op intenret te downloaden zijn, maar ik doe het zodat ik wat AJAX en JS kan leren. Nu zit ik alleen met het volgende probleem waar ik niet uit kom:

Ik gebruik prototype-1.3.3.js om de client met de server te laten communiceren. Nu heb ik de volgende functie:
JavaScript:
1
2
3
4
5
function getHTML(string,trug) { 
        var url = 'script.php'; 
        var pars = string;
        var myAjax = new Ajax.Updater(trug, url, { method: 'get', parameters: pars, onComplete: doen});
    }

als hij met deze actie klaar is, moet hij de functie 'doen' aanroepen. Dit doet hij keurig...maar, nu wil ik verschillende requests maken, met verschillende onComplete functies, maar JS wil dit niet snappen, als ik hetzelfde gebruik als de parameters en de terugkomst. Ik bedoel dus, dat de volgende functie niet werkt:
JavaScript:
1
2
3
4
5
function getHTML(string,trug,doen) { 
        var url = 'blackjackscript.php'; 
        var pars = string;
        var myAjax = new Ajax.Updater(trug, url, { method: 'get', parameters: pars, onComplete: doen});
    }

die ik dan aanroep met:
JavaScript:
1
getHTML('b=dealdeal', 'cardDeal', 'leeg');

waarom voert hij de function 'leeg' nou niet uit?? (deze staat natuurlijk wel in het script zelf)

  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 19:14
Als je wilt leren hoe AJAX werkt, kun je dan niet beter juist *zonder* die class gaan werken ?

Heb ik zelf ook gedaan, al was dat dan vooral omdat die class niet meteen wilde werken. Ik heb gebruik gemaakt van http://www.sitepoint.com/article/take-command-ajax nadat ik struikelde over een voorbeeld op basis van die prototype-meuk.

Was advocaat maar vindt het juridische nog steeds leuk


  • user109731
  • Registratie: Maart 2004
  • Niet online
Ik ken prototype verder niet, maar moet je geen functie meegeven ipv een string, zoiets:
JavaScript:
1
getHTML('b=dealdeal', 'cardDeal', leeg);

Of zo:
JavaScript:
1
getHTML('b=dealdeal', 'cardDeal', function() { leeg(); });

Of zo:
JavaScript:
1
var myAjax = new Ajax.Updater(trug, url, { method: 'get', parameters: pars, onComplete: window[doen]}); 

? :)

[ Voor 10% gewijzigd door user109731 op 18-12-2006 20:47 ]


  • Cartman!
  • Registratie: April 2000
  • Niet online
Ik werk zelf met mootools en daarin werkt het ongveer t zelfde als prototype. Die manier zoals de TS het doet klopt weldegelijk. Maar ik zou zo snel even niet weten hoe je dit moet doen. De onComplete: function() { doeJeDing(); } werkt iig wel met mootools, waarschijnlijk ook wel met prototype dus.

Erg ranzig maar misschien een tip :


JavaScript:
1
2
3
4
5
6
7
8
9
10
11
function getHTML(string, trug, defuntie)
{ 
    var url = 'script.php'; 
    var pars = string;
    var myAjax = new Ajax.Updater(trug, url, { method: 'get', parameters: pars, onComplete: function(){ doeIets(defunctie); } });
}

function doeIets(functie)
{
    eval(functie + '()');
}


niet getest overigens.

omdat je aangeeft een beginner te zijn : zoals in elke taal : eval() is evil!

[ Voor 6% gewijzigd door Cartman! op 18-12-2006 20:53 ]


  • user109731
  • Registratie: Maart 2004
  • Niet online
Cartman! schreef op maandag 18 december 2006 @ 20:50:
Ik werk zelf met mootools en daarin werkt het ongveer t zelfde als prototype. Die manier zoals de TS het doet klopt weldegelijk. Maar ik zou zo snel even niet weten hoe je dit moet doen.
Niet getest, maar volgens mij kun je gewoon het window object gebruiken, zoals in mijn laatste 'script'. Een object is (te gebruiken als) een associatieve array, en van zo'n array kan de key dynamisch zijn :)

  • Cartman!
  • Registratie: April 2000
  • Niet online
Zou kunnen werken maar prototype verwacht een directe functienaam daar zover ik weet. In dat geval zou het dus niet meer werken omdat ie daar geen variabele accepteert.

  • crisp
  • Registratie: Februari 2000
  • Nu online

crisp

Devver

Pixelated

Een string is geen functie of functie-reference, zie Grote prutser ;)

Intentionally left blank

Pagina: 1