initialize: function(aCaller,url,aContentType,aReturnedType,params)
{
// Sonderverarbeitung
// Aufruf der Ajax-Abrage prototype.js
$super(url,options);
},
Aufrufendes Objekt (siehe nächster Absatz)
Aufruf-URL des Webservice REST XTEND
ContentType der gesendeten Daten - null ist zulässig
ContentType der zurückgegebenen Daten - null ist zulässig
Im Abfragetext gesendete Daten - null ist zulässig
Sämtliche Klassen und Funktion sind dem Objekt XTENDAJAX zugeordnet.
Objekt, das die Abfrage aufruft und den Aufrufkontext verwaltet, der zur Verarbeitung der Antwort benötigt wird.
In diesem Objekt müssen zur Bearbeitung der verschiedenen Antwortstatus folgende Methoden implementiert sein:
//------------------------------------------------
//Aufruf, wenn HTTP-Status = 200
//Antwort: Klasse Ajax.Response
onSuccess:function(response){
},
//------------------------------------------------
//Aufruf, wenn HTTP-Status != 200
//Abfrage : Klasse Ajax.Request
//Ausnahme : String oder Klasse Error
onFailure:function(request, exception){
},
//------------------------------------------------
//Aufruf bei JavaScript-Ausnahme
//Abfrage : Klasse Ajax.Request
onException :function(response, headerJSON){
}
Die Funktionen onFailure und onException sind fakultativ.
Wenn sie nicht im aufrufenden Objekt implementiert sind, werden die Anzeigefunktionen XTENDAJAX.displayException und XTENDAJAX.displayFailure aufgerufen.
Im nachstehenden Beispiel wird der über den Parameter aURL definierte Webservice REST mit den Daten aData aufgerufen und die Antwort angezeigt.
var wClassCaller=Class.create({
onSuccess:function(response){
response.xtdDisplay();
},
call:function(aURL,aData){
new XTENDAJAX.request(this, aURL, null, null, aData);
}
});
var wURL="http://ecfdalbopro:28980/xtend/ajax/SOLPAIE/PAIE/FDBTEST/INT/XTDLOGIN";
var wInput={
_JSONOPT:{OPTIONS:"nogroups"},
AXUSERCODE:"DIS001",
AXPWD:"adonix"
};
new wClassCaller().call(wURL, wInput);
In der Praxis werden die Klassen der Klasse XTENDWSVC.classCallerSpg der Bibliothek XtendAjaxWsvc.js verwendet, um die Berechnung der URL und die Datenverarbeitung zu vereinfachen.
Der Parameter Antwort ist eine Instanz von Ajax.response , die um spezifische Methoden zur Verwaltung der Antwort des XTEND-Servers erweitert wurde (XTENDAJAX.xtdExtendResponse).
{
//-------------------------------------------------
// Anzeige des Antwortinhalt im Textformat (XTENDAJAX.msgBox)
xtdDisplay:function(),
//-------------------------------------------------
// Tabelle der Fehlermeldungen
xtdMsgErr:,
// Gibt True zurück, wenn die Antwort einen X3-Anwendungsfehler enthält
xtdHasX3Error:function(),
//-------------------------------------------------
// Warnungstabelle
xtdMsgWarning:,
//-------------------------------------------------
// Hinweistabelle
xtdMsgInfo:,
//-------------------------------------------------
// Vollständige Meldungstabelle
xtdMsgAll:,
//-------------------------------------------------
// ContenType der Antwort
xtdContentType:,
//-------------------------------------------------
// True, fallsContentType=text/plain
xtdIsText:function(),
//-------------------------------------------------
// True, falls ContentType=text/html
xtdIsHtml:function(),
//-------------------------------------------------
// True, falls ContentType=application/xml
xtdIsXml:function(),
//-------------------------------------------------
// True, falls ContentType=application/json
xtdIsJson:function(),
/*------------------ XML-Antwort ------------------*/
//Wertet die Antwort aus und gibt ein XML-DO zurück (siehe XtendAjaxDom.js)
xtdEvalXML,
//Enthält den mit xtdEvalXML angelegten XML-DOM
xtdResponseXML:,
/*------------------ JSON-Antwort------------------*/
//Wertet die Antwort aus und gibt ein JSON-Objekt zurück, das für die Antwort steht
xtdEvalJSON:function(),
//Enthält das mit xtdEvalJSON angelegte JSON-Objekt
xtdResponseJSON:,
//Gibt einen auf Basis einer Schlüssel- und Wertetabelle angelegten Hash ($H) zurück
xtdHash:function(aKeyArray,aValArray),
/*------- Antwort WEBSERVICE UNTERPROGRAMM -------*/
//Wertet die Antwort auf ein Unterprogramm aus
//-> Fügt spezifische Methoden hinzu
xtdEvalJSONSpg:function(),
//Gibt den Wert des Parameters AXPAR zurück
AXPAR:function(aCode),
//Gibt den Wert des Parameters AXPAR in ganzzahliger Form zurück
AXPARInt:function(aCode,aDefValue),
/*------ Antwort UNTERPROGRAMMDATENZUGRIFF -------*/
//Wertet die Antwort auf einen Webservice aus (Unterprogrammdatenzugriff)
//-> Fügt spezifische Methoden hinzu
xtdEvalJSONSpgAccess:function(),
//Anzahl angeforderte Datensätze
askedRecords:function(),
//Gesamtanzahl Datensätze
totalRecords:function(),
//Anzahl zurückgegebene Datensätze
returnedRecords:function(),
//Rang (1-N) des ersten Datensatzes
startRank:function(),
//True, falls weitere Datensätze existieren - False, falls der Seitenumbruch beendet ist
hasNext:function(),
/*--------- Antwort X3-OBJEKT-WEBSERVICE ----------*/
/Wertet die Antwort auf einen X3-Objekt-Webservice aus
//-> Fügt die spezifischen Methoden hinzu
xtdEvalJSONObject:function(),
//Technische Gruppe ADXTEC
adxADXTEC:function(aField),
//Timestamp des X3-Objekts
adxTimeStamp:function(),
//Code, des X3-Benutzers, der das Objekt zuletzt geändert hat
adxUser:function(),
}
In der Bibliothek XtendAjaxWsvc.js steht dem Benutzer eine Reihe von Klassen für die Vereinfachung des XTEND-REST-Webservice -Aufrufe vom Typ Schnittstellezur Verfügung.
Die AJAX-Abfrage stößt die Ausführung eines von der Schnittstellendatei identifizierten Webservice an und verarbeitet das Ergebnis direkt. Der XTEND-Server ruft lediglich den X3-Webservice auf und gibt die Antwort zurück.
Sämtliche Klassen und Funktion sind dem Objekt XTENDWSVC
Tools
/*----------------- TEST -----------------*/
//Aufruf der Schnittstelle aInterfaceId mit den aXmlData-Daten
// Anzeige des ErgebnissestestSpgXML:
function(aInterfaceId,aXmlData),
//---------------------------------------------
//Aufruf der Schnittstelle aInterfaceId mit den aJSONData-Daten
// Anzeige des ErgebnissestestSpgJSON:function(aInterfaceId,aJSONData),
/*----------------- CALL STATIQUE -----------------*/
//Aufruf der Schnittstelle des Unterprogramms aInterfaceId mit den aData-Daten
//Als Parameter werden die CallBack-Statistikfunktionen übergeben
runSpg:function(aInterfaceId,aData,onSuccess,onFailure),
//---------------------------------------------
//Analog runSpg mit Rückgabe der JSON-Daten
runSpgJSON:function(aInterfaceId,aData,onSuccess,onFailure),
//---------------------------------------------
//Analog runSpg Mit Rückgabe der XML-Daten
runSpgXML:function(aInterfaceId,aData,onSuccess,onFailure),
/*----------------- AUFRUFPARAMETER -----------------*/
//Gibt das Datenbankparameterobjekt XTENDWSVC.classParam zurück
//aJSONOptionen: JSON-Optionen (fakultativ)
newParam:function (aJSONOptions),
//---------------------------------------------
//Gibt ein Parameterobjekt für den Aufruf eines X3-Objekt-Webservice zurück
//Klasse XTENDWSVC.newParamXtdObject
//aTimeStampX3: X3-Timestamp des Objekts (fakultativ)
newParamXtdObject:function (aTimeStampX3,aJSONOptions),
//---------------------------------------------
//Gibt ein Parameterobjekt für den Aufruf eines Unterprogramm-Webservice zurück
//Klasse XTENDWSVC.classParamXtdSpg
newParamXtdSpg:function (aJSONOptions),
//---------------------------------------------
//Gibt ein Parameterobjekt für den Aufruf eines Unterprogramms für den Datenzugriff zurück
//Klasse XTENDWSVC.classParamXtdSpgAccess
//aNbLines: Maximal angeforderte Anzahl von Zeilen
//aStartAt: Rang des 1. Datensatzes
newParamXtdSpgAccess:function (aNbLines,aStartAt,aJSONOptions),
//---------------------------------------------
//Gibt ein Parameterobjekt für den Aufruf der Auswahlliste links zu einem X3-Objekt zurück
//Klasse Hash (Tabelle Schlüssel / Wert)
//aNbLinesReturned: Anzahl angeforderte Zeilen
newParamQuery:function(aNbLinesReturned,aJSONOPtions),
//---------------------------------------------
//Gibt ein Parameterobjekt vom Typ Schlüssel zurück
//Klasse Hash (Tabelle Schlüssel / Wert)
newParamRead:function(aJSONOPtions),
//---------------------------------------------
//Prüfung, ob es sich bei aHash wirklich um einen Abfrageparameter handelt
//Existenz des Schlüssels "_COUNT", der die Anzahl der angeforderten Zeilen umfasst
checkQueryParam:function(aHash,aReturnedCount),
Basisklasse Parameter
XTENDWSVC.classParam=Class.create({
/---------------------------------------
//aJSONOptions: Options JSON
initialize: function(aJSONOptions),
/---------------------------------------
//Gibt die JSON-Optionen zurück
options:function(),
/---------------------------------------
// Fügt einen aCode-Parameter mit dem Wert aCode hinzu
add:function(aCode,aValue),
/---------------------------------------
//Gibt den Wert des Parameters aCode zurück
get:function(aCode)
)}
Parameterklasse für den Aufruf eines Unterprogramm-Webservice, der von XTENDWSVC.classParam erbt.
XTENDWSVC.classParamXtdSpg=Class.create(XTENDWSVC.classParam,{
/---------------------------------------
//aJSONOptions: JSON-Optionen
initialize: function(OptionsJSON),
/---------------------------------------
//Hinzufügen eines AXPAR-Parameters
addAXPAR:function(aCode,aValue)
});
Parameterklasse für den Aufruf eines Webservice vom Typ Datenzugriff, der von XTENDWSVC.classParamXtdSpgAccess erbt.
XTENDWSVC.classParamXtdSpgAccess=Class.create(XTENDWSVC.classParamXtdSpg,{
/---------------------------------------
//aJSONOptions: JSON-Optionen
//aNbLines: maximale Anzahl der angeforderten Datensätze
//aStartAt: Rang des 1. Datensatzes
//Aktualisierung des Parameters '$REC_STARTAT','$TOTAL_COUNT','$RET_COUNT','$HAS_NEXT'
initialize: function(aNbLines,aStartAt,aJSONOptions),
});
Parameterklasse für den Aufruf eines X3-Objekt-Webservice, der von XTENDWSVC.classParam erbt.
XTENDWSVC.classParamObject=Class.create(XTENDWSVC.classParam,{
/---------------------------------------
//aJSONOptions: JSON-Optionen
//aTimeStampX3: String - TimeStamp des X3-Objekts (kann null oder leer sein)
//Hinzufügen des Parameters WW_MODSTAMP in die Gruppe ADXTEC mit Wert aTimeStamp
initialize: function(aTimeStampX3,aJSONOptions),
});
Klasse der JSON-Optionen
//---------------------------------------
//Aktivierung der Optionen noGroups
noGroups:function(),
//---------------------------------------
//Aktivierung der Optionen noRows
noRows:function(),
//---------------------------------------
//Aktivierung der Optionen noLabels
noLabels:function(),
//---------------------------------------
//Aktivierung der Optionen noClobs
noClobs:function(),
/---------------------------------------
//Aktualisierung der auszuschließenden Gruppenliste
//aValue: String oder Array of string
excludeGrp:function(aValue),
//---------------------------------------
//Aktualisierung der einzuschließenden Gruppenliste
includeGrp:function(aValue),
//---------------------------------------
//Aktualisierung der auszuschließenden Felder
excludeFld:function(aValue),
//---------------------------------------
//Aktualisierung der einzuschließenden Felder
includeFld:function(aValue),
/*------------- BEISPIEL -------------*/
var wOpts=new XTENDWSVC.classJsonOpt().noGroups().includeFld(["SOHNUM""ITMREF","QTY"]);
Basisklasse für den Aufruf eines REST-Webservice.
Standardmäßig können mit dieser Klasse nicht mehrere Abfragen parallel gestartet werden. Versuchte parallele Aufrufe werden gesperrt.
/*---------------- WICHTIGSTE METHODEN ----------------*/
//Konstruktor
//aInterfaceId: ID der XTEND-Schnittstelle
//Fakultativ: Die CallBack-Statistikfunktionen können als Parameter übergeben werden
// falls in der Klasse nicht implementiert
// -> aInterfaceId,onSuccess,onFailure,onException
initialize:function(aInterfaceId),
//-------------------------------------------------------
//Prüfung, ob der laufende Aufruf zum Absetzen der Abfrage führt
//aUrl : Service-URL
//aData: Daten
//aContenType: ContentType
exec:function(aUrl,aData ,aContenType),
/*-------- METHODE CALLBACK MUSS ÜBERLADEN WERDEN ----------*/
// HTTP STATUS=200
// !! Die abgeleitete Methode muss $super(response) aufrufen, um den
// Aufrufindikator auf False zu setzen
onSuccess:function(response),
/*--------- DIE METHODE CALLBACK MUSS EVENTUELL ÜBERLADEN WERDEN ----------*/
// JAVASCRIPT-AUSNAHME
//Die Methode wirft die Ausnahme standardmäßig
// !! Die abgeleitete Methode muss $super(request,exception,true) aufrufen,
// um den Aufrufparameter auf False zu setzen, ohne das Ergebnis anzuzeigen
onException:function(request,exception,aIsOverriden),
//-------------------------------------------------------
// HTTP STATUS!=200
//Die Methode wirft die Ausnahme standardmäßig
// !! Die abgeleitete Methode muss $super(request,headerJSON,true) aufrufen, um den
// Aufrufindikator auf False zu setzen, ohne das Ergebnis anzuzeigen
onFailure:function(response,headerJSON,aIsOverriden),
/*--------------------- FORMATE --------------------*/
//Festlegung von application/json als Rückgabedatentyp
//Standardtyp
setReturnJSON:function(),
//-------------------------------------------------------
//Festlegung von application/xml als Rückgabedatentyp
setReturnXML:function(),
//-------------------------------------------------------
//True, falls XML-Daten zurückgegeben werden
returnXML:function(),
//-------------------------------------------------------
//True, falls JSON-Daten zurückgegeben werden
returnJSON:function(),
/*--------------------- SONSTIGES ---------------------*/
//sendet die Anfrage an den Server, wenn kein Aufruf läuft
sendRequest:function(aUrl,aDataObject,aContenType)
//-------------------------------------------------------
//Gibt die Schnittstellen-Id zurück
getId:function(),
/*------------- VERWALTUNG PARALLELE AUFRUFE -------------*/
// Ist zu überladen, wenn parallele Aufrufe gewünscht sind
//aBusy: True, wenn ein Aufruf läuft
//Gibt True zurück, um den Webservice-Aufruf zu autorisieren
doSendRequest:function(aBusy),
//-------------------------------------------------------
//Aktualisierung des Auslastungsindikators
setBusy:function(aYes),
//-------------------------------------------------------
//True, falls ein Aufruf läuft
isBusy:function(),
Basisklasse für den Aufruf eines REST-Unterprogramm-Webservice.
XTENDWSVC.classCallerSpg=Class.create(XTENDWSVC.classCaller,{
//-------------------------------------------------------
//Konstruktor
initialize:function(aInterfaceId),
//-------------------------------------------------------
//Führt die Abfrage mit aData-Daten aus
//Zulässiger Wert für aData
// -null oder undefined -> this.exec()
// -String -> this.exec(aString,'text/plain')
// -Hash -> this.runFORMENCODED(aData)
// -Sonstige -> this.runJSON(Object.toJSON(aData))
run:function(aData),
//-------------------------------------------------------
//Führt die Abfrage mit aXML-XML-Daten aus
runXML:function(aXML),
//-------------------------------------------------------
//Führt die Abfrage mit aJSON-JSON-Daten aus
// JSON: JSON-String oder JavaScript-Objekt (Parameterklasse)
runJSON:function(aJSON),
//-------------------------------------------------------
//Die Abfrage wird mit der Schlüssel- / Wertetabelle sHash ausgeführt
//aHash steht für den Inhalt eines Formulars <form>
runFORMENCODED:function(aHash),
});
Mit nachstehendem Beispiel wird die XTDLOGIN-Schnittstelle der aktuellen Website aufgerufen und die Antwort angezeigt.
Unterprogrammaufruf
var wClassCaller=Class.create(XTENDWSVC.classCallerSpg,{
//Der Konstruktor ist fakultativ, wenn es außer aInterfaceId keine Parameter gibt
initialize:function($super,aInterfaceId){
$super(aInterfaceId);
},
//Obligatorische Methode zur Antwortbehandlung
onSuccess:function(response){
response.xtdDisplay();
}
});
var wJSONOpts=new XTENDWSVC.classJsonOpt().noGroups();
var wParams=new XTENDWSVC.classParamXtdSpg(wJSONOpts);
wParams.add("AXUSERCODE","DIS001");
wParams.add("AXPWD","adonix");
new wClassCaller("XTDLOGIN").run(wParams);
Ergebnis
URL :
http://ecfdalbopro:28980/xtend/ajax/SOLPAIE/PAIE/FDBTEST/INT/XTDLOGIN
Content-Type:
application/json;charset=utf-8
X3 INFORMATION MESSAGES :
Sie sind mit der Anwendung mit Benutzercode DIS001 verbunden
{
"AXUSERCODE":"DIS001",
"AXPWD":"adonix",
"AXUSERPROF":"B2B",
"AX3SOL":["SOLPAIE","X3V5","XTENDV2"],
"AX3FLDR":["PAIE","X3TESTV5","DEMOFRA"],
"AX3LANG":["FRA","FRA","FRA"],
"AX3USER":["XTEND","JPJ1","OG"],
"AX3PWD":["adonix","",""],
"AXLOGCOD":["NAME","FIRSTNAME","EMAIL","PHONE"],
"AXLOGVAL":["DAL BO","Frédéric","frdal@sage.com","00102030405"],
"SHIPADR1":["Sage Lyon new","Sage MGE","Sage PARIS"],
"SHIPCITY":["LYON","Echirolles","PARIS"],
"SHIPZIP":["69443","38130","75834"]
}
Basisklasse für den Aufruf eines X3-REST-Webservice.
XTENDWSVC.classCallerObject=Class.create(XTENDWSVC.classCaller,{
//-------------------------------------------------------
//Konstruktor
initialize:function(aInterfaceId),
//-------------------------------------------------------
//Methode save
//aData : Daten im Format JSON ou XML
actCreate:function(aData),
//-------------------------------------------------------
//Methode Read
//aHashKeys: Hash, der die Schlüssel des Objekts
actRead enthält:function(aHashKeys),
//-------------------------------------------------------
//Methode Delete
//aHashKeys : Hash, der die Schlüssel des Objekts
actDelete enthält:function(aHashKeys),
//-------------------------------------------------------
//Methode Modify
//aHashKeys : Hash, der die Schlüssel des Objekts
//aData enthält: Daten im Format JSON ou XML
actUpdate:function(aHashKeys,aData),
//-------------------------------------------------------
//Code-Aktion aCode
//aCode : Aktionscode
//aHashKeys : Hash, der die Schlüssel des Objekts
actOtherKeyenthält: function(aCode,aHashKeys),
//-------------------------------------------------------
//Code-Aktion aCode
//aCode : Aktionscode
//aData: Daten im Format JSON oder XML
actOtherData:function(aCode,aData),
//-------------------------------------------------------
//Action query list links
//aHashKeys : Hash, der die Auswahlschlüssel enthält
//aReturnedCount: Fakultativ - Anzahl angeforderte Zeilen
actQuery:function(aHashKeys,aReturnedCount),
});
Mit nachstehendem Beispiel wird die X3-Objekt-Schnittstelle OBJAYZ (Objekt AYZ) der aktuellen Website aufgerufen und die Antwort angezeigt.
Objektaufruf
var wClassCaller=Class.create(XTENDWSVC.classCallerObject,{
onSuccess:function(response){
response.xtdDisplay();
}
});
var wJSONOpts=new XTENDWSVC.classJsonOpt().noGroups();
var wParams=new XTENDWSVC.classParamObject(null,wJSONOpts);
wParams.add("TTL","Titre du formulaire");
wParams.add("MAICOD","frdal@sage.com");
wParams.add("CMT","Commentaire");
new wClassCaller("OBJAYZ").actCreate(wParams);
Ergebnis
URL :
http://ecfdalbopro:28980/xtend/ajax/SOLPAIE/PAIE/FDBTEST/INT/OBJAYZ/S
Content-Type:
application/json;charset=utf-8
X3-MELDUNG
Formular angelegt
{
"FRMCOD":"0902000005",
"FCYCOD":"FDBTEST",
"ZFCYCOD":"Site de test fdalbo",
"TYP":"OTH",
"ZTYP":"Divers",
"STATUT":"1",
"STATUT_LBL":"A traiter",
"TTL":"Titre du formulaire",
"MAICOD":"frdal@sage.com",
"CREDAT":"20090227",
"CREHEURE":"184431",
"CMT":"Commentaire",
"PARCOD":[],
"PARVAL":[],
"WW_MODSTAMP":"000000000000",
"WW_MODUSER":""
}
In der Bibliothek XtendAjaxScripts.js steht dem Benutzer eine Reihe von Klassen für die Vereinfachung der REST-Webservice-Aufrufe vom Typ Skriptserverzur Verfügung.
Das auf dem XTEND-Server ausgeführte Skript greift über die Schnittstelle IXtdAjaxScriptContextauf den Sitzungskontext zu.
Basisklasse für den Aufruf eines Skriptserver-Webservice.
Diese Klasse funktioniert analog zu den Schnittstellen-Webservices, es können aber beliebige Parameter an das Skript übergeben werden.
Die Parameter werden mit der Funktion XTD_CTX.getHttpBody gelesen. Der Inhalt wird vom Skript selbst interpretiert.
Auch das Format der zurückgegebenen Antwort ist frei.
Die Daten (String) werden von der Print-Funktion direkt in einen Buffer geschrieben, der an den Client zurückgegeben wird.
Mit der Funktion XTD_CTX.setHttpContenType kann der ContentType der Antwort verwaltet werden.
Das Skript kann beispielsweise HTML-Code zurückgeben, der dynamisch in die Seite eingefügt wird.
/*---------------- WICHTIGSTE METHODEN ----------------*/
//Konstruktor
//aScriptId: Pfad des Skripts, relativ zum Rootverzeichnis der Skripte
//Fakultativ: Die CallBack-Statistikfunktionen können als Parameter übergeben werden
// falls in der Klasse nicht implementiert
// -> aScriptId,onSuccess,onFailure,onException
initialize:function(aInterfaceId),
//-------------------------------------------------------
//Führt die Skripte mit aParams als Parameter aus
//Der Inhalt von aParams und hängt vom aufgerufenen Skript ab
run:function(aParams),
/*-------- METHODE CALLBACK MUSS ÜBERLADEN WERDEN ----------*/
// HTTP STATUS=200
// !! Die abgeleitete Methode muss $super(response) aufrufen, um den
// Aufrufindikator auf False zu setzen
onSuccess:function(response),
/*--------- DIE METHODE CALLBACK MUSS EVENTUELL ÜBERLADEN WERDEN ----------*/
// JAVASCRIPT-AUSNAHME
//Die Methode wirft die Ausnahme standardmäßig
// !! Die abgeleitete Methode muss $super(request,exception,true) aufrufen,
// um den Aufrufparameter auf False zu setzen, ohne das Ergebnis anzuzeigen
onException:function(request,exception,aIsOverriden),
//-------------------------------------------------------
// HTTP STATUS!=200
//Die Methode wirft die Ausnahme standardmäßig
// !! Die abgeleitete Methode muss $super(request,headerJSON,true) aufrufen, um den
// Aufrufindikator auf False zu setzen, ohne das Ergebnis anzuzeigen
onFailure:function(response,headerJSON,aIsOverriden),
/*------------- VERWALTUNG PARALLELE AUFRUFE -------------*/
// Ist zu überladen, wenn parallele Aufrufe gewünscht sind
//aBusy: True, wenn ein Aufruf läuft
//Gibt True zurück, um den Webservice-Aufruf zu autorisieren
doSendRequest:function(aBusy),
//-------------------------------------------------------
//Aktualisierung des Auslastungsindikators
setBusy:function(aYes),
//-------------------------------------------------------
//True, falls ein Aufruf läuft
isBusy:function(),
Mit dieser Klasse können HTML-Elemente (div, span etc.) nach Eingang der Antwort des Webservice aktualisiert werden, sofern dieser eine Antwort der Art HTML text/htmlzurückgibt.
XTENDSCRIPTS.classUpdater=Class.create(XTENDSCRIPTS.classCaller,{
//-------------------------------------------------------
//Konstruktor
//aScriptId : Pfad des Skriptservers
//aUpdateId : Id des zu aktualisierenden DOM-Elements
//aClearBefore: True, um vor Abfrageversand den Inhalt von aUpdateld löschen zu können
initialize: function(aScriptId,aUpdateId,aClearBefore),
//-------------------------------------------------------
// Skriptausführung mit aParams wie Parameter
run:function(aParams),
});
Aufruf eines Skripts, das die beiden Parameter P1 und P2 liegt sowie Rückgabe des Parameterinhalts in Form eines HTML-Inhalts.
Skript
//Include der Werkzeugbibliothek
#include "libs\xtdWsvc.js"
//Lesen der vom Client gesendeten Daten
// -> In diesem Beispiel JSON-Daten
// -> String im Format: {P1:"ValeurP1",P2:"ValeurP2"}
//Die Eval-Funktion legt ein JavaScript-Objekt an aus dem String
var wInput=eval('('+XTD_CTX.getHttpBody()+')');
//Hilfsobjekt zum Aufbau der HTML-Antwort
var wHtml=new XTENDWSVC.classHTMLBuffer;
//Es wird ein HTML zurückgegeben, das die fett formatierten Parameter enthält
wHtml.append("<b>P1=").append(wInput.P1).append("</b><br>");
wHtml.append("<b>P2=").append(wInput.P2).append("</b><br>");
//Schreiben der Antwort
print(wHtml.html());
//Aktualisierung ContenType
XTD_CTX.setHttpContenType("text/html");
Aufruf auf Basis der HTML-Seite
<Script>
function callAjaxScript(aP1,aP2){
//Parameter
var wParams={P1:aP1,P2:aP2};
//ajaxTest3.js ist der Pfad des Skripts
//idReponseScript ist die Id, die das HTML-Ergebnis anzeigt
//True zum Löschen des Inhalts der div vor Skriptaufruf
new XTENDSCRIPTS.classUpdater("ajaxTest3.js","idReponseScript",true).run(wParams);
}
</script>
<!--Button zum Anstoßen des Aufrufs->
<input type="button" value="callAjaxScript" onClick="javascript:callAjaxScript('Hello','world');"><br>
<!--div zur Ergebnisanzeige-->
<div id="idReponseScript"></div>
Abfrageergebnis