initialize: funzione(aCaller,url,aContentType,aReturnedType,params)
{
// Programma specifico
// Chiamata della richiesta Ajax di prototype.js
$super(url,options);
},
Oggetto chiamante (vedere § seguente)
Url di chiamata del web service REST XTEND
ContentType dei dati inviati - null autorizzato
ContentType dei dati ottenuti - null autorizzato
Dati inviati nel corpo della richiesta - null autorizzato
Tutte le classi e funzioni sono collegate all'oggetto XTENDAJAX.
Si tratta dell'oggetto che chiama la richiesta e che gestisce il contesto di chiamata di cui si avrà bisogno per elaborare la risposta.
Questo oggetto deve implementare i metodi seguenti per elaborare i vari stati della risposta:
//------------------------------------------------
//Chiamata se HTTP status è uguale = 200
//risposta: Classe Ajax.Response
onSuccess:function(response){
},
//------------------------------------------------
//Chiamata se HTTP status è diverso da 200
//request : Classe Ajax.Request
//exception : String o classe Error
onFailure:function(request, exception){
},
//------------------------------------------------
//Chiamata su eccezione JavaScript
//request : Classe Ajax.Request
onException :function(response,headerJSON){
}
Le funzioni onFailure e onException sono facoltative.
Se l'oggetto chiamante non le implementa, saranno richiamate le funzioni di visualizzazione XTENDAJAX.displayException e XTENDAJAX.displayFailure.
L'esempio qui in basso richiama il web service REST identificato dal parametro aURL con i dati aData e visualizza la risposta.
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);
Nella pratica si utilizzano le classi della classe XTENDWSVC.classCallerSpg della libreria XtendAjaxWsvc.js che facilitano il calcolo dell'url e la manipolazione dei dati.
Il parametro response diventa una istanza a partire dalla classe Ajax.response a cui si aggiungono i metodi specifici per elaborare la risposta del server XTEND (XTENDAJAX.xtdExtendResponse).
{
//-------------------------------------------------
// Visualizza il contenuto della risposta in formato testo (XTENDAJAX.msgBox)
xtdDisplay:function(),
//-------------------------------------------------
// Riquadro che contiene i messaggi di errore
xtdMsgErr:,
// Restituisce true se la risposta comporta un errore applicativo X3
xtdHasX3Error:function(),
//-------------------------------------------------
// Riquadro che contiene messaggi warning
xtdMsgWarning:,
//-------------------------------------------------
// Riquadro che contiene i messaggi di informazione
xtdMsgInfo:,
//-------------------------------------------------
// Riquadro che contiene tutti i messaggi
xtdMsgAll:,
//-------------------------------------------------
// ContentType della risposta
xtdContentType:,
//-------------------------------------------------
// True se ContentType=text/plain
xtdIsText:function(),
//-------------------------------------------------
// True se ContentType=text/html
xtdIsHtml:function(),
//-------------------------------------------------
// True se ContentType=application/xml
xtdIsXml:function(),
//-------------------------------------------------
// True se ContentType=application/json
xtdIsJson:function(),
/*------------------ Réponse XML ------------------*/
//Valuta la risposta e restituisce un DOM XML (vedere XtendAjaxDom.js)
xtdEvalXML,
//Contiene il DOM XML creato da xtdEvalXML
xtdResponseXML:,
/*------------------ Risposta JSON------------------*/
//Valuta la risposta e restituisce un oggetto JSON che rappresenta la risposta
xtdEvalJSON:function(),
//Contiene l'oggetto JSON creato da xtdEvalJSON
xtdResponseJSON:,
//Restituisce un Hash ($H) creato a partire da un riquadro di chiavi e di valori
xtdHash:function(aKeyArray,aValArray),
/*------- Risposta WEB SERVICE SOTTO-PROGRAMMA -------*/
//Valuta la risposta con un sotto-programma
//-> Aggiunge i metodi specifici
xtdEvalJSONSpg:function(),
//Restituisce il valore del parametro AXPAR
AXPAR:function(aCode),
//Restituisce il valore del parametro AXPAR come un intero
AXPARInt:function(aCode,aDefValue),
/*------ Risposta SOTTO-PROGRAMMA ACCESSO DATI -------*/
//Valuta la risposta ad un web service sotto-programma accesso dati
//-> Aggiunge i metodi specifici
xtdEvalJSONSpgAccess:function(),
//Numero di record richiesti
askedRecords:function(),
//Numero totale di record
totalRecords:function(),
//Numero record ottenuti
returnedRecords:function(),
//Range (1-N) del primo record
startRank:function(),
//True se esistono dei record successivi - False se paginazione terminata
hasNext:function(),
/*--------- Risposta WEB SERVICE OGGETTO X3 ----------*/
// Valuta la risposta ad un web service oggetto X3
//-> Aggiunge i metodi specifici
xtdEvalJSONObject:function(),
//Gruppo tecnico ADXTEC
adxADXTEC:function(aField),
//Timestamp dell'oggetto X3
adxTimeStamp:function(),
//UserCode X3 che ha modificato per ultimo l'oggetto
adxUser:function(),
}
La libreria XtendAjaxWsvc.js mette a disposizione dello sviluppatore un insieme di classi per facilitare la chiamata dei web service REST di XTEND di tipo interfaccia.
La richiesta AJAX attiva l'esecuzione di un web service identificato dalla scheda interfaccia ed elabora direttamente il risultato. Il server XTEND chiama solo il web service X3 e restituisce la risposta.
Tutte le classi e le funzioni sono collegate all'oggetto XTENDWSVC
/*----------------- TEST -----------------*/
//Richiama l'interfaccia aInterfaceId con i dati aXmlData
// Visualizza il risultato
testSpgXML:function(aInterfaceId,aXmlData),
//---------------------------------------------
//Richiama l'interfaccia aInterfaceId con i dati aJSONData
// Visualizza il risultato
testSpgJSON:function(aInterfaceId,aJSONData),
/*----------------- CALL STATICA -----------------*/
//Richiama l'interfaccia sotto-programma aInterfaceId con i dati aData
//Le funzioni CallBack statiche sono passate nel parametro
runSpg:function(aInterfaceId,aData,onSuccess,onFailure),
//---------------------------------------------
//Idem runSpg con i dati JSON in ritorno
runSpgJSON:function(aInterfaceId,aData,onSuccess,onFailure),
//---------------------------------------------
//Idem runSpg con i dati XML in ritorno
runSpgXML:function(aInterfaceId,aData,onSuccess,onFailure),
/*----------------- PARAMETRI DI CHIAMATA -----------------*/
//Restituisce un oggetto parametro di base XTENDWSVC.classParam
//aJSONOptions : opzioni JSON (facoltativa)
newParam:function (aJSONOptions),
//---------------------------------------------
//Restituisce un oggetto parametro per la chiamata di un web service oggetto X3
//Classe XTENDWSVC.newParamXtdObject
//aTimeStampX3: il timestamp X3 dell'oggetto (facoltativo)
newParamXtdObject:function (aTimeStampX3,aJSONOptions),
//---------------------------------------------
//Restituisce un oggetto parametro per la chiamata di un web service sotto-programma
//Classe XTENDWSVC.classParamXtdSpg
newParamXtdSpg:function (aJSONOptions),
//---------------------------------------------
//Restituisce un oggetto parametro per la chiamata di un sotto-programma 'accesso dati'
//Classe XTENDWSVC.classParamXtdSpgAccess
//aNbLines : numero massimo di record richiesti
//aStartAt : range del 1° record
newParamXtdSpgAccess:function (aNbLines,aStartAt,aJSONOptions),
//---------------------------------------------
//Restituisce un oggetto parametro per la chiamata di una lista di selezione oggetto X3
//Classe Hash (riquadro chiave/valore)
//aNbLinesReturned : numero righe richieste
newParamQuery:function(aNbLinesReturned,aJSONOPtions),
//---------------------------------------------
//Restituisce un oggetto parametro di tipo chiave
//Classe Hash (riquadro chiave/valore)
newParamRead:function(aJSONOPtions),
//---------------------------------------------
//Verifica che aHash sia il parametro per una query
//Presenza della chiave "_COUNT" che contiene il numero di righe richieste
checkQueryParam:function(aHash,aReturnedCount),
Classe di base dei parametri.
XTENDWSVC.classParam=Class.create({
/---------------------------------------
//aJSONOptions: Opzioni JSON
initialize: function(aJSONOptions),
/---------------------------------------
//Restituisce le opzioni JSON
option:function(),
/---------------------------------------
//Aggiunge un parametro aCode con il valore aCode
add:function(aCode,aValue),
/---------------------------------------
//Restituisce il valore del parametro aCode
get:function(aCode)
)}
Classe di parametro di chiamata di un web service sotto-programma che eredita da XTENDWSVC.classParam.
XTENDWSVC.classParamXtdSpg=Class.create(XTENDWSVC.classParam,{
/---------------------------------------
//aJSONOption: Opzioni JSON
initialize: function(OptionsJSON),
/---------------------------------------
//Aggiunta di un parametro AXPAR
addAXPAR:function(aCode,aValue)
});
Classe di parametro di chiamata di un web service sotto-programma di tipo 'Accesso dati' che eredita da XTENDWSVC.classParam.
XTENDWSVC.classParamXtdSpg=Class.create(XTENDWSVC.classParam,{
/---------------------------------------
//aJSONOption: Opzioni JSON
//aNbLines: numero massimo di record richiesti
//aStartAt : range del 1°record
//Aggiorna i parametri '$REC_STARTAT','$TOTAL_COUNT','$RET_COUNT','$HAS_NEXT'
initialize: function(aNbLines,aStartAt,aJSONOptions),
});
Classe di parametro di chiamata di un web service oggetto X3 che eredita da XTENDWSVC.classParam.
XTENDWSVC.classParamXtdSpg=Class.create(XTENDWSVC.classParam,{
/---------------------------------------
//aJSONOptions: Opzioni JSON
//aTimeStampX3: String - TimeStamp dell'oggetto X3 (può essere null o vuoto)
//Aggiunge il parametro WW_MODSTAMP nel gruppo ADXTEC con il valore aTimeStamp
initialize: function(aTimeStampX3,aJSONOptions),
});
Classe che rappresenta le opzioni JSON.
//---------------------------------------
//Attiva l'opzione noGroups
noGroups:function(),
//---------------------------------------
//Attiva l'opzione noRows
noRows:function(),
//---------------------------------------
//Attiva l'opzione noLabels
noLabels:function(),
//---------------------------------------
//Attiva l'opzione noClobs
noClobs:function(),
/---------------------------------------
//Aggiorna l'elenco dei gruppi da escludere
//aValue : String or Array of string
excludeGrp:function(aValue),
//---------------------------------------
//Aggiorna l'elenco dei gruppi da includere
includeGrp:function(aValue),
//---------------------------------------
//Aggiorna l'elenco dei campi da escludere
excludeFld:function(aValue),
//---------------------------------------
//Aggiorna l'elenco dei campi da includere
includeFld:function(aValue),
/*------------- ESEMPIO -------------*/
var wOpts=new XTENDWSVC.classJsonOpt().noGroups().includeFld(["SOHNUM""ITMREF","QTY"]);
Si tratta della classe di base usata per richiamare un web service REST.
Di default questa classe non permette di postare più richieste simultaneamente e blocca i tentativi di chiamate multiple.
/*---------------- METODI PRINCIPALI ----------------*/
//Costruttore
//aInterfaceId : ID dell'interfaccia XTEND
//Facoltativo: è possibile passare le funzioni CallBack statiche nei parametri
// se non implementata nella classe
// -> aInterfaceId,onSuccess,onFailure,onException
initialize:function(aInterfaceId),
//-------------------------------------------------------
//Verifica se la chiamata è in corso e attiva l'invio della richiesta
//aUrl : Url del service
//aData : Dati
//aContenType: ContentType
exec:function(aUrl,aData ,aContenType),
/*-------- METODO CALLBACK DA IMPLEMENTARE OBBLIGATORIAMENTE ----------*/
// HTTP STATUS=200
// !! Il metodo figlie deve richiamare $super(response) per posizionare
// il flag di chiamata a false
onSuccess:function(response),
/*--------- METODO CALLBACK EVENTUALMENTE DA IMPLEMENTARE ----------*/
// ECCEZIONE JAVASCRIPT
//Di default questo metodo visualizza l'eccezione
// !! Il metodo figlie deve richiamare $super(request,exception,true)
// per posizionare il flag di chiamata a false senza visualizzare il risultato
onException:function(request,exception,aIsOverriden),
//-------------------------------------------------------
// HTTP STATUS!=200
//Di default questo metodo visualizza la causa dell'errore
// !! Il metodo figlie deve chiamare $super(request,headerJSON,true)
// per posizionare il flag di chiamata a false senza visualizzare il risultato
onFailure:function(response,headerJSON,aIsOverriden),
/*--------------------- FORMATI --------------------*/
//Fissa application/json come tipo di dati restituiti
//Tipo di default
setReturnJSON:function(),
//-------------------------------------------------------
//Fissa application/xml come tipo di dati restituiti
setReturnXML:function(),
//-------------------------------------------------------
//True se dati XML restituiti
returnXML:function(),
//-------------------------------------------------------
//True se dati JSON restituiti
returnJSON:function(),
/*--------------------- DIVERSI --------------------*/
//posta realmente la richiesta verso il server se non vi sono chiamate in corso
sendRequest:function(aUrl,aDataObject,aContenType)
//-------------------------------------------------------
//Restituisce l'id dell'interfaccia
getId:function(),
/*------------- GESTIONE CHIAMATE MULTIPLE -------------*/
//Da implementare se si vogliono sbloccare le chiamate multiple
//aBusy : True se chiamata in corso
//Restituisce true per autorizzare la chiamata del web service
doSendRequest:function(aBusy),
//-------------------------------------------------------
//Aggiorna il flag di occupazione
setBusy:function(aYes),
//-------------------------------------------------------
//True se chiamata in corso
isBusy:function()
Si tratta della classe di base utilizzata per richiamare un web service REST sotto-programma.
XTENDWSVC.classCallerSpg=Class.create(XTENDWSVC.classCaller,{
//-------------------------------------------------------
//Costruttore
initialize:function(aInterfaceId),
//-------------------------------------------------------
//Esegue la richiesta con i dati aData
//Valore autorizzato per aData
// -null o undefined -> this.exec()
// -String -> this.exec(aString,'text/plain')
// -Hash -> this.runFORMENCODED(aData)
// -Altro -> this.runJSON(Object.toJSON(aData))
run:function(aData),
//-------------------------------------------------------
//Esegue la richiesta con i dati XML aXML
runXML:function(aXML),
//-------------------------------------------------------
//Esegue la richiesta con i dati JSON aJSON
// JSON : String JSON o oggetto JavaScript (classe parametro)
runJSON:function(aJSON),
//-------------------------------------------------------
//Esegue la richiesta con il riquadro delle chiavi/valori aHash
//aHash rappresenta il contenuto di un formulario <form>
runFORMENCODED:function(aHash),
});
L'esempio qui in basso chiama l'interfaccia XTDLOGIN del sito corrente e visualizza la risposta.
Call Sotto-Programma
var wClassCaller=Class.create(XTENDWSVC.classCallerSpg,{
//Costruttore facoltativo se non vi sono altri costruttori facoltativi diversi da aInterfaceId
initialize:function($super,aInterfaceId){
$super(aInterfaceId);
},
//Metodo obbligatorio per elaborare la risposta
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);
Risultato
URL :
http://ecfdalbopro:28980/xtend/ajax/SOLPAIE/PAIE/FDBTEST/INT/XTDLOGIN
Content-Type :
application/json;charset=utf-8
X3 INFORMAZIONE MESSAGGI:
Si è connessi con il codice utente 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"]
}
Si tratta della classe di base utilizzata per richiamare un web service REST oggetto X3.
XTENDWSVC.classCallerObject=Class.create(XTENDWSVC.classCaller,{
//-------------------------------------------------------
//Costruttore
initialize:function(aInterfaceId),
//-------------------------------------------------------
//Metodo save
//aData : Dati in formato JSON o XML
actCreate:function(aData),
//-------------------------------------------------------
//Metodo Read
//aHashKeys : Hash che contiene le chiavi dell'oggetto
actRead:function(aHashKeys),
//-------------------------------------------------------
//Metodo Delete
//aHashKeys : Hash che contiene le chiavi dell'oggetto
actDelete:function(aHashKeys),
//-------------------------------------------------------
//Metodo Modify
//aHashKeys : Hash che contiene le chiavi dell'oggetto
//aData : Dati in formato JSON o XML
actUpdate:function(aHashKeys,aData),
//-------------------------------------------------------
//Azione di codice aCode
//aCode : Codice dell'azione
//aHashKeys : Hash che contiene le chiavi dell'oggetto
actOtherKey:function(aCode,aHashKeys),
//-------------------------------------------------------
//Azione di codice aCode
//aCode : Codice dell'azione
//aData : Dati in formato JSON o XML
actOtherData:function(aCode,aData),
//-------------------------------------------------------
//Action query lista di selezione
//aHashKeys : Hash che contiene le chiavi per la selezione
//aReturnedCount : Opzionale - Numero di righe richieste
actQuery:function(aHashKeys,aReturnedCount),
});
L'esempio qui in basso chiama l'interfaccia oggetto X3 OBJAYZ (oggetto AYZ) del sito corrente durante la creazione e visualizza la risposta.
Call Oggetto
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","Titolo del formulario");
wParams.add("MAICOD","frdal@sage.com");
wParams.add("CMT","Commento");
new wClassCaller("OBJAYZ").actCreate(wParams);
Risultato
URL :
http://ecfdalbopro:28980/xtend/ajax/SOLPAIE/PAIE/FDBTEST/INT/OBJAYZ/S
Content-Type :
application/json;charset=utf-8
X3 INFORMATION MESSAGES :
Formulario creato
{
"FRMCOD":"0902000005",
"FCYCOD":"FDBTEST",
"ZFCYCOD":"Sito di test fdalbo",
"TYP":"OTH",
"ZTYP":"Diversi",
"STATUT":"1",
"STATUT_LBL":"Da elaborare",
"TTL":"Titolo del formulario",
"MAICOD":"frdal@sage.com",
"CREDAT":"20090227",
"CREHEURE":"184431",
"CMT":"Commento",
"PARCOD":[],
"PARVAL":[],
"WW_MODSTAMP":"000000000000",
"WW_MODUSER":""
}
La libreria XtendAjaxScripts.js mette a disposizione dello sviluppatore un insieme di classi per facilitare la chiamata dei web service REST di tipo script server.
Lo script che si esegue sul server XTEND accede al contesto della sessione tramite l'interfaccia IXtdAjaxScriptContext.
Si tratta della classe di base utilizzata per richiamare un web service script server.
Questa classe funziona secondo lo stesso principio dei web service interfaccia ma i parametri che sono passati allo script server sono liberi.
Sono letti tramite la funzione XTD_CTX.getHttpBody ed il contenuto è interpretato dallo script stesso.
Inoltre, il formato della risposta restituita è libero.
E' la funzione print che scrive direttamente i dati (String) in un buffer che sarà restituito al client.
La funzione XTD_CTX.setHttpContenType permette di gestire il ContentType della risposta.
Per esempio, lo script può restituire dell'HTML che sarà inserito in modo dinamico nella pagina.
/*---------------- METODI PRINCIPALI ----------------*/
//Costruttore
//aScriptId: Percorso relativo dello script rispetto alla root degli script
//Facoltativo: si possono passare le funzioni CallBack statiche nel parametro
// se non implementato nella classe
// -> aScriptId,onSuccess,onFailure,onException
initialize:function(aScriptId),
//-------------------------------------------------------
//Esegue gli script con aParams come parametro
//Il contenuto di aParams è libero e dipende dallo script richiamato
run:function(aParams),
/*-------- METODO CALLBACK DA IMPLEMENTARE OBBLIGATORIAMENTE ----------*/
// HTTP STATUS=200
// !! Il metodo figlie deve richiamare $super(response) per posizionare
// il flag di chiamata a false
onSuccess:function(response),
/*--------- METODO CALLBACK EVENTUALMENTE DA IMPLEMENTARE ----------*/
// ECCEZIONE JAVASCRIPT
//Di default questo metodo visualizza l'eccezione
// !! Il metodo figlie deve richiamare $super(request,exception,true)
// per posizionare il flag di chiamata a false senza visualizzare il risultato
onException:function(request,exception,aIsOverriden),
//-------------------------------------------------------
// HTTP STATUS!=200
//Di default questo metodo visualizza la causa dell'errore
// !! Il metodo figlie deve richiamare $super(request,headerJSON,true)
// per posizionare il flag di chiamata a false senza visualizzare il risultato
onFailure:function(response,headerJSON,aIsOverriden),
/*------------- GESTIONE CHIAMATE MULTIPLE -------------*/
//Da implementare se si vogliono sbloccare le chiamate multiple
//aBusy : True se chiamata in corso
//Restituisce true per autorizzare la chiamata del web service
doSendRequest:function(aBusy),
//-------------------------------------------------------
//Aggiorna il flag di occupazione
setBusy:function(aYes),
//-------------------------------------------------------
//True se chiamata in corso
isBusy:function()
Questa classe permette di aggiornare un elemento del DOM HTML (div, span...) al ricevimento della risposta del web service se quest'ultimo restituisce una risposta HTML text/html.
XTENDSCRIPTS.classUpdater=Class.create(XTENDSCRIPTS.classCaller,{
//-------------------------------------------------------
//Costruttore
//aScriptId : Path dello script server
//aUpdateId : ID dell'elemento del DOM da aggiornare
//aClearBefore : True per cancellare il contenuto di aUpdateId prima dell'invio della richiesta
initialize: function(aScriptId,aUpdateId,aClearBefore),
//-------------------------------------------------------
// Esegue lo script con aParams come parametro
run:function(aParams),
});
Chiamata di uno script che legge 2 parametri P1 e P2 e restituisce il contenuto dei parametri sotto forma di un contenuto HTML.
Script
//Include della libreria strumenti
#include "libs\xtdWsvc.js"
//Lettura dei dati inviati dal client
// -> In questo esempio si tratta di dati JSON
// -> String nel formato: {P1:"ValoreP1",P2:"ValoreP2"}
//La funzione Eval crea un oggetto JavaScrit a partire dalla String
var wInput=eval('('+XTD_CTX.getHttpBody()+')');
//Oggetto strumento per costruire la risposta per costruire la risposta HTML
var wHtml=new XTENDWSVC.classHTMLBuffer;
//Si restituisce un HTML che contiene i parametri scritti in grassetto
wHtml.append("<b>P1=").append(wInput.P1).append("</b><br>");
wHtml.append("<b>P2=").append(wInput.P2).append("</b><br>");
//Scrittura della risposta
print(wHtml.html());
//Aggiornamento del ContentType
XTD_CTX.setHttpContenType("text/html");
Chiamata a partire dalla pagina HTML
<Script>
function callAjaxScript(aP1,aP2){
//Parametri
var wParams={P1:aP1,P2:aP2};
//ajaxTest3.js è il path dello script
//idReponseScript è l'id della div che visualizza il risultato HTML
//true per cancellare il contenuto della div prima del richiamo dello script
new XTENDSCRIPTS.classUpdater("ajaxTest3.js","idReponseScript",true).run(wParams);
}
</script>
<!--Bottone per attivare la chiamata-->
<input type="button" value="callAjaxScript" onClick="javascript:callAjaxScript('Hello','world');"><br>
<!--div per visualizzare il risultato-->
<div id="idReponseScript"></div>
Risultato della richiesta