Obiekt wywołujący (patrz: następny §;)
wywołanie adresu url usługi sieciowej REST XTEND
ContentType przesłanych danych - brak autoryzowanych
ContentType zwróconych danych - brak autoryzowanych
Dane przesłane w treści zapytania - brak autoryzowanych
Wszystkie klasy i funkcje przypisane są do obiektu XTENDAJAX.
Jest to obiekt wywołujący podczas zapytania i zarządzający kontekstem wywołania, koniecznym dla przetworzenia odpowiedzi.
W celu przetworzenia różnych raportów z odpowiedzi, obiekt ten musi realizować poniższe metody:
//------------------------------------------------
//Appel si HTTP status is equal to 200
//odpowiedź : Classe Ajax.Response
onSuccess:function(response){
},
//------------------------------------------------
//Wywołanie jeżeli status HTTP jest inny niż 200
//zapytanie : Class Ajax.Request
//wyjątek: String ou classe Error
onFailure:function(request, exception){
},
//------------------------------------------------
//Wywołanie wyjątku JavaScript
//zapytanie : Classe Ajax.Request
onException :function(response,headerJSON){
}
Funkcje onFailure i onException mogą być stosowane opcjonalnie.
Jeżeli obiekt wywołujący ich nie stosuje, wówczas wywoływane będą funkcje XTENDAJAX.displayException i XTENDAJAX.displayFailure .
Poniższy przykład ilustruje wywołanie usługi sieciowej REST, która zidentyfikowana jest przez konfigurację aURL z aData i wyświetla odpowiedź.
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);
Użytkownik w rzeczywistości wykorzystuje klasy z klasy XTENDWSVC.classCallerSpg , która jest formą biblioteki XtendAjaxWsvc.js , co ułatwia obliczenie adresu url i wykorzystanie danych.
Konfiguracja odpowiedzi inicjowana jest z klasy Ajax.response , która została poszerzona o pewne metody mające na celu obsługę odpowiedzi serwera XTEND (XTENDAJAX.xtdExtendResponse).
{
//-------------------------------------------------
// Wyświetla treść odpowiedzi w formacie tekstowym (XTENDAJAX.msgBox)
xtdDisplay:function(),
//-------------------------------------------------
// Tabela zawierająca komunikaty o błędach
xtdMsgErr:,
// Odesłanie literału true jeżeli wiadomość zawiera błąd aplikacji X3
xtdHasX3Error:function(),
//-------------------------------------------------
// Tabela zawierająca komunikaty o ostrzeżeniach
xtdMsgWarning:,
//-------------------------------------------------
// Tabela zawierająca komunikaty informacyjne
xtdMsgInfo:,
//-------------------------------------------------
// Tabela zawierająca wszystkie komunikaty
xtdMsgAll:,
//-------------------------------------------------
// ContenType odpowiedzi
xtdContentType:,
//-------------------------------------------------
// Prawdziwe jeżeli ContentType=text/plain
xtdIsText:function(),
//-------------------------------------------------
// Prawdziwe jeżeli ContentType=text/html
xtdIsHtml:function(),
//-------------------------------------------------
// Prawdziwe jeżeli ContentType=application/xml
xtdIsXml:function(),
//-------------------------------------------------
// Prawdziwe jeżeli ContentType=application/json
xtdIsJson:function(),
/*------------------ Odpowiedź XML------------------*/
//Ocenia odpowiedzi i wysyła DOM XML (patrz: XtendAjaxDom.js)
xtdEvalXML,
//Zawiera DOM XML utworzone przez xtdEvalXML
xtdResponseXML:,
/*------------------ Odpowiedź JSON ---------*/
//Ocenia odpowiedź i wysyła obiekt JSON, który reprezentuje odpowiedź
xtdEvalJSON:function(),
//Zawiera odpowiedź JSON utworzoną przez xtdEvalJSON
xtdResponseJSON:,
//Odsyła Hash ($H) utworzony z klucza i tabeli wartości
xtdHash:function(aKeyArray,aValArray),
/*------- Odpowiedź USŁUGI SIECIOWEJ PODPROGRAMU-------*/
//Ocenia odpowiedź na podprogram
//-> Dodaje wybrane metody
xtdEvalJSONSpg:function(),
//Odsyła wartość konfiguracji AXPAR
AXPAR:function(aCode),
//Odsyła wartość konfiguracji AXPAR jako typ liczbowy
AXPARInt:function(aCode,aDefValue),
/*------ Odpowiedź PODPROGRAMU DATA ACCESS -------*/
//Ocenia odpowiedź na usługę sieciową podprogramu dostępu do danych
//-> Dodaje wybrane metody
xtdEvalJSONSpgAccess:function(),
//Liczba żądanych rekordów
askedRecords:function(),
//Łączna liczba rekordów
totalRecords:function(),
//Liczba odesłanych rekordów
returnedRecords:function(),
//Pozycja (1-N) pierwszego rekordu
startRank:function(),
//Prawda, jeżeli dalej istnieją jeszcze rekordy - Fałsz, jeżeli jest to ostatnia strona
hasNext:function(),
/*--------- USŁUGA SIECIOWA OBIEKTU X3 ----------*/
//Ocenia odpowiedź na usługę sieciową obiektu X3
//-> Dodaje wybrane metody
xtdEvalJSONObject:function(),
//grupy techniczne ADXTEC
adxADXTEC:function(aField),
//Znacznik czasu obiektu X3
adxTimeStamp:function(),
//UserCode X3, który jako ostatni zmodyfikował obiekt
adxUser:function(),
}
Biblioteka XtendAjaxWsvc.js udostępnia szeroki zakres klas interfejsu w celu ułatwienia wywoływania usług sieciowych REST z XTEND
Zapytanie AJAX uruchamia wykonywanie usług sieciowych określonych przez zapisy interfejsu i przetwarza bezpośrednio wyniki. Serwer XTEND wywołuje jedynie usługi sieciowe X3 i ponownie wysyła odpowiedź.
Wszystkie klasy i funkcje przypisane są do obiektu XTENDWSVC .
/*----------------- TESTY -----------------*/
//Wywołuje interfejs aInterfaceId z danymi aXmlData
// Wyświetla wynik
testSpgXML:function(aInterfaceId,aXmlData),
//---------------------------------------------
//Wywołuje interfejs aInterfaceId z danymi aJSONData
// Wyświetla wynik
testSpgJSON:function(aInterfaceId,aJSONData),
/*----------------- WYWOŁANIE STATYCZNE -----------------*/
//Wywołuje interfejs pod-programu aInterfaceId z danymi
//Funkcje statystyczne CallBack wprowadzone są jako konfiguracja
runSpg:function(aInterfaceId,aData,onSuccess,onFailure),
//---------------------------------------------
//Idem runSpg z danymi JSON w zamian
runSpgJSON:function(aInterfaceId,aData,onSuccess,onFailure),
//---------------------------------------------
//Idem runSpg z danymi XML w zamian
runSpgXML:function(aInterfaceId,aData,onSuccess,onFailure),
/*----------------- PARAMETRY WYWOŁANIA-----------------*/
//Odsyła obiekt konfiguracji bazy XTENDWSVC.classParam
//aJSONOptions: Opcje JSON (opcjonalnie)
newParam:function (aJSONOptions),
//---------------------------------------------
//Odsyła obiekt konfiguracji dla wywołania usługi sieciowej obiektu X3
//Classe XTENDWSVC.newParamXtdObject
//aTimeStampX3: znacznik czasu X3 dla obiektów (opcjonalnie)
newParamXtdObject:function (aTimeStampX3,aJSONOptions),
//---------------------------------------------
//Odsyła obiekt konfiguracji dla wywołania usługi sieciowej podprogramu
//Classe XTENDWSVC.classParamXtdSpg
newParamXtdSpg:function (aJSONOptions),
//---------------------------------------------
//Odsyła obiekt konfiguracji dla wywołania podprogramu „data access”
//Classe XTENDWSVC.classParamXtdSpgAccess
//aNbLines: maksymalna liczba żądanych rekordów
//aStartAt: 1. klasyfikacja rekordu
newParamXtdSpgAccess:function (aNbLines,aStartAt,aJSONOptions),
//---------------------------------------------
//Odsyła obiekt konfiguracji dla wywołania listy szybkiego wyboru obiektu X3
//Klasa Hash (klucz/tabela wartości)
//aNbLinesReturned: liczba żądanych wierszy
newParamQuery:function(aNbLinesReturned,aJSONOPtions),
//---------------------------------------------
//Odsyła obiekt konfiguracji klucza
//Klasa Hash (klucz/tabela wartości)
newParamRead:function(aJSONOPtions),
//---------------------------------------------
//Sprawdza, czy aHash jest konfiguracją dla zapytania
//Obecność klucza „_COUNT” zawierającego liczbę żądanych wierszy
checkQueryParam:function(aHash,aReturnedCount),
Klasa bazy konfiguracji
XTENDWSVC.classParam=Class.create({
/---------------------------------------
//aJSONOptions: Opcje JSON
initialize: function(aJSONOptions),
/---------------------------------------
//Odsyła opcje JSON
options:function(),
/---------------------------------------
//Dodaje konfigurację aCode z wartością: a Code
add:function(aCode,aValue),
/---------------------------------------
//Odsyła wartość konfiguracji aCode
get:function(aCode),
)}
Klasa konfiguracji wywołania usługi sieciowej podprogramu posiadająca XTENDWSVC.classParam.
XTENDWSVC.classParamXtdSpg=Class.create(XTENDWSVC.classParam,{
/---------------------------------------
//aJSONOptions: Opcje JSON
initialize: function(OptionsJSON),
/---------------------------------------
//Dodanie konfiguracji AXPAR
addAXPAR:function(aCode,aValue)
});
Klasa ustawień wywołania dla usługi sieciowej podprogramu „Data access” posiadającej XTENDWSVC.classParamXtdSpgAccess.
XTENDWSVC.classParamXtdSpgAccess=Class.create(XTENDWSVC.classParamXtdSpg,{
/---------------------------------------
//aJSONOptions : Opcje JSON
//aNbLines : maksymalna liczba żądanych rekordów
//aStartAt : 1. klasyfikacja rekordu
//Aktualizuje konfiguracje „$REC_STARTAT','$TOTAL_COUNT','$RET_COUNT','$HAS_NEXT”
initialize: function(aNbLines,aStartAt,aJSONOptions),
});
Klasa konfiguracji wywołania usługi sieciowej obiektu X3, posiadającego XTENDWSVC.classParam.
XTENDWSVC.classParamObject=Class.create(XTENDWSVC.classParam,{
/---------------------------------------
//aJSONOptions : Opcje JSON
//aTimeStampX3 : Ciąg - TimeStamp obiektu X3 (może wynosić zero lub być pusty)
//Dodaje konfigurację WW_MODSTAMP w grupie ADXTEC z wartością aTimeStamp
initialize: function(aTimeStampX3,aJSONOptions),
});
Klasa reprezentująca opcje JSON.
//---------------------------------------
//Aktywuje opcję noGroups
noGroups:function(),
//---------------------------------------
//Aktywowana opcja noRows
noRows:function(),
//---------------------------------------
//Aktywuje opcję noLabels
noLabels:function(),
//---------------------------------------
//Aktywuje opcję noClobs
noClobs:function(),
/---------------------------------------
//Aktualizuje listę grup do wykluczenia
//aValue : Ciąg lub Tablica ciągu
excludeGrp:function(aValue),
//---------------------------------------
//Aktualizuje listę grup do wykluczenia
includeGrp:function(aValue),
//---------------------------------------
//aktualizuje listę pól do wykluczenia
excludeFld:function(aValue),
//---------------------------------------
//aktualizuje listę pól do wykluczenia
includeFld:function(aValue),
/*------------- PRZYKŁAD -------------*/
var wOpts=new XTENDWSVC.classJsonOpt().noGroups().includeFld(['SOHNUM''ITMREF','QTY']);
Jest to klasa bazowa służąca do wywoływania usługi sieciowej REST.
Domyślnie klasa ta nie może być wykorzystywana do zgłaszania wielu zapytań jednocześnie a także blokuje próby wykonania wielokrotnych wywołań.
/*---------------- GŁÓWNE METODY----------------*/
//Constructeur
//aInterfaceId: ID interfejsu XTEND
//Opcjonalne: możliwe jest wprowadzanie funkcji statystycznych CallBack jako konfiguracji
// jeżeli nie zostało zaimplementowane w klasie
// -> aInterfaceId,onSuccess,onFailure,onException
initialize:function(aInterfaceId),
//-------------------------------------------------------
//Sprawdza bieżące wywołanie i inicjuje wysłanie zapytania
//aUrl : Url usługi
//aData : Dane
//aContenType: ContentType
exec:function(aUrl,aData ,aContenType),
/*-------- METODA CALLBACK SŁUŻĄCA DO SYSTEMATYCZNEGO PRZEŁADOWYWANIA
// HTTP STATUS=200
// !! Metody potomne muszą wywoływać $super(response) w celu ustawienia
// flagi wywołania w pozycji fałsz
onSuccess:function(response),
/*--------- METODA CALLBACK SŁUŻĄCA DO POTENCJALNEGO PRZEŁADOWANIA ----------*/
// EXCEPTION JAVASCRIPT
//Domyślnie metoda ta wyświetla wyjątek
// !! Metoda potomna musi wywoływać $super(request,exception,true)
// w celu ustawienia flagi wywołania bez wyświetlania wyniku
onException:function(request,exception,aIsOverriden),
//-------------------------------------------------------
// HTTP STATUS!=200
//Domyślnie metoda ta wyświetla przyczynę błędu
// !! Metoda potomna musi wywoływać $super(request,headerJSON,true)
// w celu ustawienia flagi wywołania bez wyświetlania wyniku
onFailure:function(response,headerJSON,aIsOverriden),
/*--------------------- FORMATY --------------------*/
//Ustawia application/json jako typ danych otrzymywanych w zwrotach
//Typ domyślny
setReturnJSON:function(),
//-------------------------------------------------------
//Ustawia application/xml jako typ danych otrzymywanych w zwrotach
setReturnXML:function(),
//-------------------------------------------------------
//Prawda jeżeli w zwrocie są dane XML
returnXML:function(),
//-------------------------------------------------------
//Prawda jeżeli w zwrocie są dane JSON
returnJSON:function(),
/*--------------------- POZOSTAŁE ---------------------*/
//skutecznie wysyła zapytanie do serwera jeżeli nie ma obecnie żadnych zapytań
sendRequest:function(aUrl,aDataObject,aContenType)
//-------------------------------------------------------
//Odsyła ID interfejsu
getId:function(),
/*------------- ZARZĄDZANIE WYWOŁANIAMI WIELOKROTNYMI -------------*/
//W celu przeładowania, gdy użytkownik chce odblokować wywołania wielokrotne
//aBusy : Prawda jeżeli wywołanie w toku
//”Prawda” odsyłana w celu autoryzacji wywołania do usługi sieciowej
doSendRequest:function(aBusy),
//-------------------------------------------------------
//Aktualizuje flagę zajętości
setBusy:function(aYes),
//-------------------------------------------------------
//Prawda jeżeli wywołanie w toku
isBusy:function(),
Jest to klasa bazowa służąca do wywoływania usługi sieciowej REST podprogramu.
XTENDWSVC.classCallerSpg=Class.create(XTENDWSVC.classCaller,{
//-------------------------------------------------------
//Producent
initialize:function(aInterfaceId),
//-------------------------------------------------------
//Realizuje zapytanie z wykorzystaniem danych aData
//Autoryzowana wartość dla aData
// -zerowe lub niezdefiniowane -> this.exec()
// -Ciąg -> this.exec(aString,'text/plain')
// -Hash -> this.runFORMENCODED(aData)
// -Inne -> this.runJSON(Object.toJSON(aData))
run:function(aData),
//-------------------------------------------------------
//Realizuje zapytanie z wykorzystaniem danych XML aXML
runXML:function(aXML),
//-------------------------------------------------------
//Realizuje zapytanie z wykorzystaniem danych JSON aJSON
// JSON : Ciąg JSON lub obiekt JavaScript (klasa konfiguracji)
runJSON:function(aJSON),
//-------------------------------------------------------
//Realizuje zapytanie z wykorzystaniem aHash tabeli klucza/wartości
//aHash przedstawia zawartość formularza <form>
runFORMENCODED:function(aHash),
});
Poniższy przykład wywołuje interfejs XTDLOGIN bieżącej witryny i wyświetla odpowiedź.
Wywołanie podprogramu
var wClassCaller=Class.create(XTENDWSVC.classCallerSpg,{
//Producent jeżeli aInterfaceId jest jedyną konfiguracja
initialize:function($super,aInterfaceId){
$super(aInterfaceId);
},
//Méthode obligatoire pour traiter la réponse
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);
Wynik
Adres URL :
http://ecfdalbopro:28980/xtend/ajax/SOLPAIE/PAIE/FDBTEST/INT/XTDLOGIN
Typ Treści:
application/json;charset=utf-8
KOMUNIKATY INFORMACYJNE X3:
Użytkownik połączony z wykorzystaniem kodu użytkownika DIS001
{
'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']
}
Jest to klasa bazowa służąca do wywoływania usługi sieciowej REST obiektu X3.
XTENDWSVC.classCallerObject=Class.create(XTENDWSVC.classCaller,{
//-------------------------------------------------------
//Constructeur
initialize:function(aInterfaceId),
//-------------------------------------------------------
//Metoda zapisu
//aData : Dane w formacie JSON lub XML
actCreate:function(aData),
//-------------------------------------------------------
//Méthode Read
//aHashKeys : Hash zawierający klucze obiektu
actRead:function(aHashKeys),
//-------------------------------------------------------
//Methode Delete
//aHashKeys : Hash zawierający klucze obiektu
actDelete:function(aHashKeys),
//-------------------------------------------------------
//Modyfikacja Metody
//aHashKeys : Hash zawierający klucze obiektów
//aData : Dane w formacie JSON lub XML
actUpdate:function(aHashKeys,aData),
//-------------------------------------------------------
//Action de code aCode
//aCode : Kod czynności
//aHashKeys : Hash zawierający klucze obiektu
actOtherKey:function(aCode,aHashKeys),
//-------------------------------------------------------
//Czynność kodu aCode
//aCode : Kod czynności
//aData : Dane w formacie JSON lub XML
actOtherData:function(aCode,aData),
//-------------------------------------------------------
//Lista szybkiego wyboru zgłoszeń czynności
//aHashKeys : Hash zawierający klucze wybranych elementów
//aReturnedCount : Opcjonalne - liczba żądanych wierszy
actQuery:function(aHashKeys,aReturnedCount),
});
Poniższy przykład wywołuje interfejs obiektu X3 OBJAYZ (obiekt AYZ) bieżącej witryny podczas tworzenia i wyświetla odpowiedź.
Wywołaj Obiekt
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','Form title');
wParams.add('MAICOD','frdal@sage.com');
wParams.add('CMT','Comment');
new wClassCaller('OBJAYZ').actCreate(wParams);
Wynik
Adres URL :
http://ecfdalbopro:28980/xtend/ajax/SOLPAIE/PAIE/FDBTEST/INT/OBJAYZ/S
Typ Treści:
application/json;charset=utf-8
KOMUNIKATY INFORMACYJNE X3:
Utworzono formularz
{
'FRMCOD':'0902000005',
'FCYCOD':'FDBTEST',
'ZFCYCOD':'Site de test fdalbo',
'TYP':'OTH',
'ZTYP':'Divers',
'STATUT':'1',
'STATUT_LBL':'A traiter',
'TTL':'Form title',
'MAICOD':'frdal@sage.com',
'CREDAT':'20090227',
'CREHEURE':'184431',
'CMT':'Comment',
'PARCOD':[],
'PARVAL':[],
'WW_MODSTAMP':'000000000000',
'WW_MODUSER':''
}
Biblioteka XtendAjaxScripts.js udostępnia szeroki zakres klas w celu ułatwienia wywoływania skryptu serwera usług sieciowych.
Skrypt, jaki wykonywany jest na serwerze XTEND ma dostęp do kontekstu sesji poprzez interfejs IXtdAjaxScriptContext .
Jest to klasa bazowa służąca do wywoływania usługi sieciowej skryptu serwera.
Klasa ta działa w taki sam sposób jak usługi sieciowe interfejsu, jednak konfiguracje wpisane w skrypt serwera mogą być dowolne.
Są one odczytywane poprzez funkcjęXTD_CTX.getHttpBody a ich zawartość jest interpretowana przez samą siebie.
Format odpowiedzi jest również dowolny.
Funkcja wydruku zapisuje (układa w ciąg) dane w sposób bezpośredni w buforze, który zostanie wysłany do klienta.
Funkcja XTD_CTX.setHttpContenType służy do zarządzania ContentType odpowiedzi.
Na przykład, skrypt może odsyłać HTML, który zostanie w dynamiczny sposób umieszczony na stronie.
/*---------------- METODY GŁÓWNE ----------------*/
//Producent
//aScriptId : Ścieżka powiązana ze skryptem, zgodnie ze źródłem skryptu
//Opcjonalne: możliwe jest wprowadzanie funkcji statystycznych CallBack jako konfiguracji
// jeżeli nie zostało zaimplementowane w klasie
// -> aScriptId,onSuccess,onFailure,onException
initialize:function(aScriptId),
//-------------------------------------------------------
//Wykonuje skrypt z aParams jako konfiguracją
//Zawartość aParams jest dowolna i zależy od wywołanego skrytpu
run:function(aParams),
/*-------- METODA CALLBACK SŁUŻĄCA DO SYSTEMATYCZNEGO PRZEŁADOWYWANIA
// HTTP STATUS=200
// !! Metody potomne muszą wywoływać $super(response) w celu ustawienia
// flagi wywołania w pozycji fałsz
onSuccess:function(response),
/*--------- METODA CALLBACK SŁUŻĄCA DO POTENCJALNEGO PRZEŁADOWANIA ----------*/
// WYJĄTEK JAVASCRIPT
//Domyślnie metoda ta wyświetla wyjątek
// !! Metody potomne muszą wywoływać $super(request,exception,true)
// w celu ustawienia flagi wywołania na fałsz bez wyświetlania wyniku
onException:function(request,exception,aIsOverriden),
//-------------------------------------------------------
// HTTP STATUS!=200
//Domyślnie metoda ta wyświetla przyczynę błędu
// !! Metody potomne muszą wywoływać $super(request,headerJSON,true)
// w celu ustawienia flagi wywołania na fałsz bez wyświetlania wyniku
onFailure:function(response,headerJSON,aIsOverriden),
/*------------- ZARZĄDZANIE WYWOŁANIAMI WIELOKROTNYMI-------------*/
//W celu przeładowania, gdy użytkownik chce odblokować wywołania wielokrotne
//aBusy : Prawda jeżeli wywołanie w toku
//”Prawda” odsyłana w celu autoryzacji wywołania do usługi sieciowej
doSendRequest:function(aBusy),
//-------------------------------------------------------
//Aktualizuje flagę zajętości
setBusy:function(aYes),
//-------------------------------------------------------
//Prawda jeżeli wywołanie w toku
isBusy:function()
Klasa ta służy do aktualizowania elementu z DOM HTML (div, span) w momencie otrzymania odpowiedzi usługi sieciowej, jeżeli ta wysłała odpowiedź w formacie HTML text/html .
XTENDSCRIPTS.classUpdater=Class.create(XTENDSCRIPTS.classCaller,{
//-------------------------------------------------------
//Producent
//aScriptId : Ścieżka serwera skryptu.
//aUpdateId : ID elementu DOM przeznaczonego do aktualizacji
//aClearBefore : „Prawda” do wykasowania zawartości Uplateld przed wysłaniem zapytania
initialize: function(aScriptId,aUpdateId,aClearBefore),
//-------------------------------------------------------
//Wykonuje skrypt z aParams jako konfiguracją
run:function(aParams),
});
Wywołanie skryptu odczytującego dwie konfiguracje, P1 oraz P2 i wysyłającego zawartość konfiguracji w formie treści HTML.
Skrypt
//Zawiera bibliotekę narzędzi
#zawiera 'libs\xtdWsvc.js'
//Odczyt danych przesłanych przez klienta
// -> w tym przykładzie są to dane JSON
// -> Ciąg w formacie: {P1:'ValueP1',P2:'ValueP2'}
//Funkcja Eval tworzy z Ciągu obiekt JavaScript
var wInput=eval('('+XTD_CTX.getHttpBody()+')');
//Obiekt narzędzia do tworzenia odpowiedzi HTML
var wHtml=new XTENDWSVC.classHTMLBuffer;
//HTML zawierający konfigurację napisaną wytłuszczoną czcionką jest wysyłany ponownie
wHtml.append('<b>P1=').append(wInput.P1).append('</b><br>');
wHtml.append('<b>P2=').append(wInput.P2).append('</b><br>');
//Zapisywanie odpowiedzi
print(wHtml.html());
//Aktualizacja ContenType
XTD_CTX.setHttpContenType('text/html');
Wywołanie ze strony HTML
<script>
funkcja callAjaxScript(aP1,aP2){
//Ustawienia
var wParams={P1:aP1,P2:aP2};
//ajaxTest3.js jest stroną skryptu
//idReponseScript jest ID div wyświetlającego wyniki HTML
„Prawda” do wykasowania zawartości div przed wywołaniem skryptu
new XTENDSCRIPTS.classUpdater('ajaxTest3.js','idReponseScript',true).run(wParams);
}
</script>
<!--Przycisk uruchamiający wywołanie-->
<input type='button' value='callAjaxScript' onClick='javascript:callAjaxScript('Hello','world');'><br>
<!--div wyświetlający wynik-->
<div id='idReponseScript'></div>
Żądany wynik