GlideAjax - Client
La classe GlideAjax permet à un script client d’appeler du code côté serveur dans un script include.
Pour utiliser GlideAjax dans un script client, procédez comme suit.
- Créez une instance GlideAjax en appelant le constructeur GlideAjax . En tant qu’argument du constructeur, spécifiez le nom de la classe de l’include de script qui contient la méthode que vous voulez appeler.
- Appelez la méthode addParam avec le paramètre et le sysparm_name nom de la méthode script-include que vous souhaitez appeler.
- Facultatif. Appelez la méthode addParam une ou plusieurs fois pour fournir au code script-include les autres paramètres dont il a besoin.
- Exécutez le code côté serveur en appelant getXML(). Remarque :getXML() est la méthode préférée pour exécuter le code, car elle est asynchrone et ne retarde pas l’exécution d’un autre code client. Une autre méthode, getXMLWait(), est également disponible mais n’est pas recommandée. L’utilisation de getXMLWait() garantit l’ordre d’exécution, mais peut donner l’impression que l’application ne répond pas, ce qui dégrade considérablement l’expérience utilisateur de toute application qui l’utilise. getXMLWait() n’est pas disponible pour les applications incluses dans le périmètre.
var ga = new GlideAjax('HelloWorld'); // HelloWorld is the script include class
ga.addParam('sysparm_name','helloWorld'); // helloWorld is the script include method
ga.addParam('sysparm_user_name',"Bob"); // Set parameter sysparm_user_name to 'Bob'
ga.getXML(HelloWorldParse); /* Call HelloWorld.helloWorld() with the parameter sysparm_user_name set to 'Bob'
and use the callback function HelloWorldParse() to return the result when ready */
// the callback function for returning the result from the server-side code
function HelloWorldParse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer);
}
GlideAjax : GlideAjax(chaîne class_name)
Constructeur pour GlideAjax.
| Nom | Type | Description |
|---|---|---|
| class_name | Chaîne | Le nom de la classe côté serveur qui contient la méthode que vous voulez exécuter. |
Dans cet exemple, un script client définit l’utilisateur sur Fred Luddy, puis appelle un include de script pour obtenir son gestionnaire.
// client script – contains onLoad function and a callback function
function onLoad() {
var ga = new GlideAjax('GetUserInfo'); // GetUserInfo is the script include name
ga.addParam('sysparm_name','managerName'); // managerName is the function in the script include that we're calling
ga.addParam('sysparm_user_name','fred.luddy'); // set user to Fred Luddy
/* Call GetUserInfo.managerName() with user set to Fred Luddy and use the callback function ManagerParse() to return the result when ready */
ga.getXMLAnswer(ManagerParse);
}
// callback function for returning the result from the script include
function ManagerParse(response) {
alert(response);
}
// GetUserInfo script include
var GetUserInfo = Class.create();
GetUserInfo.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
managerName: function() {
var userName = this.getParameter("sysparm_user_name");
var grUser = new GlideRecord('sys_user');
grUser.get("user_name", userName);
// Build the payload. You can return additional data if needed.
var result = {
"manager": grUser.getDisplayValue('manager')
};
return JSON.stringify(result);
},
type: 'GetUserInfo'
});
GlideAjax : addParam(String parm_name, String parm_value)
Spécifie un nom de paramètre et une valeur à transmettre à la fonction côté serveur associée à cet objet GlideAjax .
| Nom | Type | Description |
|---|---|---|
| parm_name | Chaîne | Nom du paramètre à transmettre. (Le nom doit commencer par le sysparm_ .) |
| parm_value | Chaîne | Valeur à affecter à parm_name. |
| Type | Description |
|---|---|
| nul |
Dans cet exemple, un script client définit l’utilisateur sur Fred Luddy, puis appelle un include de script pour obtenir son gestionnaire.
// client script – contains onLoad function and a callback function
function onLoad() {
var ga = new GlideAjax('GetUserInfo'); // GetUserInfo is the script include name
ga.addParam('sysparm_name','managerName'); // managerName is the function in the script include that we're calling
ga.addParam('sysparm_user_name','fred.luddy'); // set user to Fred Luddy
/* Call GetUserInfo.managerName() with user set to Fred Luddy and use the callback function ManagerParse() to return the result when ready */
ga.getXMLAnswer(ManagerParse);
}
// callback function for returning the result from the script include
function ManagerParse(response) {
alert(response);
}
// GetUserInfo script include
var GetUserInfo = Class.create();
GetUserInfo.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
managerName: function() {
var userName = this.getParameter("sysparm_user_name");
var grUser = new GlideRecord('sys_user');
grUser.get("user_name", userName);
// Build the payload. You can return additional data if needed.
var result = {
"manager": grUser.getDisplayValue('manager')
};
return JSON.stringify(result);
},
type: 'GetUserInfo'
});
GlideAjax : getAnswer()
Récupère les résultats d’une méthode côté serveur appelée à partir du client via getXMLWait().
| Nom | Type | Description |
|---|---|---|
| aucun |
| Type | Description |
|---|---|
| nul | Le résultat retourné par la méthode côté serveur précédemment appelée avec getXMLWait(). |
GlideAjax - getXMLAnswer(Rappel de fonction, Objet additionalParam, Object responseParam)
Appelle le processeur de manière asynchrone et obtient l’élément de réponse de la réponse au format XML.
| Nom | Type | Description |
|---|---|---|
| rappel | Fonction | Fonction de rappel. La fonction reçoit l’élément answer de la réponse au format XML en tant qu’argument. |
| additionalParam | Objet | Facultatif. Paire nom-valeur de paramètres supplémentaires. |
| responseParam (en anglais seulement) | Objet | Facultatif. Deuxième argument pour la fonction de rappel. |
| Type | Description |
|---|---|
| nul |
Renvoie le nombre de pièces jointes
function updateAttachmentCount(sysid) {
var ga = new GlideAjax('AttachmentAjax');
ga.addParam('sysparm_type', 'attachmentCount');
ga.addParam('sysparm_value', sysid);
ga.getXMLAnswer(numberOfAttachments, null, sysid); // callback: numberOfAttachments with args (answer, sysid)
}
function numberOfAttachments(answer, sysid) {
// we want to know there are 5 attachments, not 5.0 attachments
var number = parseInt(answer);
var buttons = $$('.attachmentNumber_' + sysid);
if (buttons[0] == undefined)
$('header_attachment_list_label').down().innerHTML = number;
else {
for (var i = 0; i < buttons.length; i++) {
buttons[i].innerHTML = number;
}
}
}
GlideAjax : getXML(rappel de fonction)
Envoie au serveur une demande d’exécution de la méthode et des paramètres associés à cet objet GlideAjax .
Le serveur traite la requête de manière asynchrone et, lorsqu’il est prêt, renvoie les résultats via la fonction spécifiée en tant que callback_function.
| Nom | Type | Description |
|---|---|---|
| rappel | Fonction | Nom de la fonction de rappel pour traiter les résultats retournés par le serveur. |
| Type | Description |
|---|---|
| nul |
var comments = gel("dialog_comments").value;
var ga = new GlideAjax('validateComments'); //Call script include to escape text
ga.addParam('sysparm_name', 'validateComments');
ga.addParam('sysparm_comments', comments);
ga.getXML(callback);
return false;
function callback(response) {
var comments = response.responseXML.documentElement.getAttribute("answer");
comments = trim(comments);
if (comments == "") {
//If comments are empty, alert the user and stop submission
alert("Please enter your comments before submitting.");
} else {
//If there are comments, close the dialog window and submit them
GlideDialogWindow.get().destroy(); //Close the dialog window
g_form.setValue("comments", comments); //Set the "Comments" field with comments in the dialog
}
GlideAjax : getXMLWait()
Envoie au serveur une demande d’exécution de la méthode et des paramètres associés à cet objet GlideAjax .
| Nom | Type | Description |
|---|---|---|
| aucun |
| Type | Description |
|---|---|
| nul |
var ga = new GlideAjax('HelloWorld');
ga.addParam('sysparm_name','helloWorld');
ga.addParam('sysparm_user_name',"Bob");
ga.getXMLWait();
alert(ga.getAnswer());