Das ist unverständlich. Du kannst als Wert auch durchaus ein Objekt abspeichern, aber was ist das Problem?
Wenn ich eine Objekt angebe, muss ich meine Daten einer Eigenschaft zuweisen. Der Anwender muss ein Objekt als Wert der Eigenschaft obj = { bla : blub } übergeben und bekommt er die Daten z.B. in blub.wert zurück. So weit ich das beurteilen kann, haben die Anwender des Skripts um einiges weniger Ahnung als ich und verwenden oft einfach globale Variablen. Schöner wäre es daher, ich könnte eine Variable Namens blub übergeben und die Daten darin speichern. Geht auch wenn, ich eval und den Namen als String verwende:
var blub;
var obj = { bla : "blub" };
eval ( obj.bla + "=" + data + ";" );
Der Anwender soll halt nichts von den Requests usw. mitbekommen, sondern einfach schreiben können:
var anwendervariable1, anwendervariable2, anwendervariable3;
serv = WebService.createService({
url: 'http://....dll',
spsId: '52.2.1.1',
spsPort: '801'
})
var liste = {
bereich: SPS-Merker,
startAdr: 0,
anzBytes: 170,
timeout: 200,
zuordnungen: {
zuordn1: {
zielvar: anwendervariable1,
typ: 'BOOL',
quelladr: 0
},
zuordn2: {
zielvar: anwendervariable2,
typ: 'STRING',
quelladr: 1,
laenge: 4
},
zuordn3: {
zielvar: anwendervariable3,
typ: 'BOOL',
quelladr: 6
},
...
zuordnX: {
zielvar: anwendervariableX,
typ: 'INT',
quelladr: 168
}
}
serv.holeDaten(liste);
Die Funktion holeDaten() löst einen Request aus und bekommt die Daten vom Webservice in Form eines Strings zurück. Dann werden die Daten an Hand der Zuordnungsliste verarbeitet. Das Ganze ist für die Visualisierung von SPS-Daten gedacht.
Funktioniert auch alles bestens, nur dass ich derzeit die Daten in anwendervariable1.data zurückschreibe und nicht in anwendervariable1. Ist mehr eine Sache der Schönheit. Wenn man von eval die Finger lassen sollte, dann lass ich das so.
Tom