Ik ben bezig met het maken van een SOAP client in javascript (die ik een beetje crossbrowser kan inzetten). Nu lees ik een WSDL file in en haal daaruit de functienamen en parameters van de SOAP server. Dat gaat prima allemaal (als je het niet volgt, maakt niet uit, ik heb een lijstje functienamen en paramaters beschikbaar)
Wat ik nu eigenlijk wil, is functies aan m'n client toevoegen zodat ik ze kan aanroepen als ware het locale functies, dus stel ik heb een functienaam "doSomething", dan wil ik een method in m'n client aanmaken zodat ik soapClient.doSomething() kan zeggen en de boel dus een request gaat doen naar de soapserver en een waarde retourneerd (synchroon nog even).
wat ik dus tot nu toe in elkaar heb zitten:
dat werkt, ik maak nieuwe methods aan op deze manier, maar ik wil meer
ik wil natuurlijk niet de arguments alerten, maar in elkaar klussen tot een xml string voor de soap request. Tijdens dat klussen heb ik ook de naam van de functie zelf nodig. En dan wordt het lastig, want iets als
gaat natuurlijk niet werken, want die funcName zit niet binnen de scope van die functie
het mooiste zou zijn als ik vanuit deze nieuwe functie een standaard method van m'n object kan aanroepen, bijvoorbeeld deze:
Wat ik nu eigenlijk wil, is functies aan m'n client toevoegen zodat ik ze kan aanroepen als ware het locale functies, dus stel ik heb een functienaam "doSomething", dan wil ik een method in m'n client aanmaken zodat ik soapClient.doSomething() kan zeggen en de boel dus een request gaat doen naar de soapserver en een waarde retourneerd (synchroon nog even).
wat ik dus tot nu toe in elkaar heb zitten:
code:
1
2
3
4
5
6
| soapServer.prototype.loadFunctions = function() {
for (var i=0; i<this.functions.length; i++) {
var funcName = this.functions[i];
this[funcName] = new Function(function() {"alert(arguments)")
}
} |
dat werkt, ik maak nieuwe methods aan op deze manier, maar ik wil meer
ik wil natuurlijk niet de arguments alerten, maar in elkaar klussen tot een xml string voor de soap request. Tijdens dat klussen heb ik ook de naam van de functie zelf nodig. En dan wordt het lastig, want iets als
code:
1
| this[funcName] = new Function(function() {"alert(funcName)") |
gaat natuurlijk niet werken, want die funcName zit niet binnen de scope van die functie
het mooiste zou zijn als ik vanuit deze nieuwe functie een standaard method van m'n object kan aanroepen, bijvoorbeeld deze:
code:
1
2
3
| soapClient.prototype.execute = function(funcName, args) {
//produceer een soap request de functienaam en argumenten
} |
offtopic:
hoop dat er een keer iemand op m'n topics reageert
hoop dat er een keer iemand op m'n topics reageert
[ Voor 4% gewijzigd door Verwijderd op 16-02-2006 21:55 ]