AJAX
AJAX (JavaScript et XML asynchrones) est un groupe de techniques de développement côté client interdépendantes utilisées pour créer des applications Web asynchrones.
AJAX permet aux applications web d’envoyer et de récupérer des informations vers et depuis un serveur en arrière-plan, sans impact sur l’expérience utilisateur avec la page web affichée.
GlideAjax
La classe GlideAjax permet l’exécution de code côté serveur à partir du client. Les appels GlideAjax transmettent des paramètres aux includes de script et, en utilisant les conventions de nommage, permettent l’utilisation de ces paramètres.
- Initialisez GlideAjax avec le nom du script include que vous souhaitez utiliser.
- Lors de la création de l’include de script, vous devez définir le champ nom de manière à ce qu’il soit exactement identique au nom de classe.
- Lors de la création de l’include de script, vous devez activer la case Client pouvant être appelé .
- Spécifiez le paramètre sysparm_name. GlideAjax utilise sysparm_name pour trouver la fonction à utiliser.
- Tous les paramètres supplémentaires peuvent être transmis, qui doivent tous commencer par sysparm_. Évitez d’utiliser des noms de paramètres prédéfinis :
- sysparm_name
- sysparm_function
- sysparm_value
- sysparm_type
- Le code est ensuite exécuté avec les fonctions getXML() ou getXMLWait().
Pour plus d’informations, consultez l’API GlideAjax .
Exemples de GlideAjax asynchrone
Le script GlideAjax asynchrone se compose de deux parties : le code côté client et le code côté serveur.
Hello World : retour d’une valeur à partir du serveur
Côté client
Ce code s’exécute sur le client (le navigateur web). Créez un script client comme d’habitude. Cela envoie les paramètres au serveur, qui effectue ensuite le traitement. Pour que le client n’attende pas le résultat, une fonction de rappel est utilisée pour retourner le résultat, passé à la fonction getXML(). (Dans ce cas, il s’appelle HelloWorldParse.)
var ga = new GlideAjax('HelloWorld');
ga.addParam('sysparm_name', 'helloWorld');
ga.addParam('sysparm_user_name', "Bob");
ga.getXML(HelloWorldParse);
function HelloWorldParse(response) {
var answer = response.responseXML.documentElement.getAttribute("answer");
alert(answer); }Côté serveur
HelloWorld.- Le code sys_script_include doit étendre la classe AbstractAjaxProcessor et être appelable par le client.
- Les noms de fonctions commençant par « _ » sont considérés comme privés et ne peuvent pas être appelés à partir du client.
- Évitez de remplacer les méthodes de AbstractAjaxProcessor, y compris
initialize. Bien qu’il soit possible d’invoquer des méthodes de votre objet superclass que vous avez remplacées, c’est compliqué et il vaut mieux l’éviter.
var HelloWorld = Class.create();
HelloWorld.prototype = Object.extendsObject(AbstractAjaxProcessor, {
helloWorld:function() { return "Hello " + this.getParameter('sysparm_user_name') + "!"; } ,
_privateFunction: function() { // this function is not client callable
}
});Il en résulte une boîte d’alerte qui dit « Bonjour Bob ! » lorsque vous consultez le formulaire.Renvoi de valeurs multiples
Étant donné que la réponse est un document XML, nous ne sommes pas limités à renvoyer une seule valeur de réponse . Voici un exemple plus complexe renvoyant plusieurs nœuds et attributs XML.
Script include du processeur AJAX
/*
* MyFavoritesAjax script include Description - sample AJAX processor returning multiple value pairs
*/
var MyFavoritesAjax = Class.create();
MyFavoritesAjax.prototype = Object.extendsObject(AbstractAjaxProcessor, {
/*
* method available to client scripts call using:
* var gajax = new GlideAjax("MyFavoritesAjax");
* gajax.addParam("sysparm_name","getFavorites");
*/
getFavorites: function() { // build new response xml element for result
var result = this.newItem("result");
result.setAttribute("message","returning all favorites");
//add some favorite nodes with name and value attributes
this._addFavorite("color","blue");
this._addFavorite("beer","lager");
this._addFavorite("pet","dog");
},
// all items are returned to the client through the inherited methods of AbstractAjaxProcessor
_addFavorite: function(name, value) {
var favs = this.newItem("favorite");
favs.setAttribute("name",name);
favs.setAttribute("value",value); },
type:"MyFavoritesAjax"
});
Script client
// new GlideAjax object referencing name of AJAX script include
var ga = new GlideAjax("MyFavoritesAjax");
// add name parameter to define which function we want to call
// method name in script include will be getFavorites
ga.addParam("sysparm_name","getFavorites");
// submit request to server, call ajaxResponse function with server response
ga.getXML(ajaxResponse);
function ajaxResponse(serverResponse) {
// get result element and attributes
var result = serverResponse.responseXML.getElementsByTagName("result");
var message = result[0].getAttribute("message");
//check for message attribute and alert user
if(message) alert(message);
//build output to display on client for testing
var output = "";
// get favorite elements
var favorites = serverResponse.responseXML.getElementsByTagName("favorite");
for(var i = 0; i < favorites.length; i ++) {
var name = favorites[i].getAttribute("name");
var value = favorites[i].getAttribute("value");
output += name + " = " + value + "\n "; }
alert(output); }
Réponse XML
<xml sysparm_max= "15" sysparm_name="getFavorites" sysparm_processor="MyFavoritesAjax">
<result message = "returning all favorites"></result>
<favorite name = "color" value = "blue"></favorite>
<favorite name = "beer" value = "lager"></favorite>
<favorite name = "pet" value = "dog"></favorite>
</xml>
Exemples de GlideAjax synchrone
Utilisez synchrone lorsque votre script ne peut pas continuer sans la réponse GlideAjax . La session s’arrête jusqu’à ce que la réponse soit reçue.
Si votre cas d’utilisation exige qu’aucun traitement supplémentaire ne puisse avoir lieu tant que la réponse GlideAjax n’a pas été reçue, vous pouvez utiliser getXMLWait(). Cependant, comme cela ralentit votre code et verrouille la session utilisateur jusqu’à ce que la réponse soit reçue, il est généralement recommandé d’utiliser getXML() avec une fonction de rappel.
La méthode getXMLWait() n’est pas disponible dans les applications incluses dans le périmètre.
Ce code entraîne une alerte côté client qui affiche The Server Says Hello Bob !.
var ga = new GlideAjax('HelloWorld') ;
ga.addParam('sysparm_name','helloWorld');
ga.addParam('sysparm_user_name',"Bob");
ga.getXMLWait();
alert(ga.getAnswer());var HelloWorld = Class.create();
HelloWorld.prototype = Object.extendsObject(AbstractAjaxProcessor, {
helloWorld: function()
{ return "The Server Says Hello " + this.getParameter('sysparm_user_name') + "!"; } } );AJAXClientHelper
Fournit des fonctions d’aide pour que les clients Ajax puissent récupérer une valeur à partir d’un client Ajax.
Où l’utiliser ?
Utilisez cet include de script partout où vous avez besoin de récupérer une valeur à partir d’un client Ajax.
Résumé de la méthode
| Résumé de la méthode | Description |
|---|---|
| getDisplay() | Obtient la valeur d’affichage à partir de la liste de choix. |
Détail de la méthode
| Méthode API | Description | Paramètres d'entrée | Retours de sortie |
|---|---|---|---|
| getDisplay() | Obtient la valeur d’affichage à partir de la liste de choix. | aucun | La valeur d’affichage. |
Friser
// getDisplay
(function(table, sysId) {
var ga = new GlideAjax('AjaxClientHelper');
ga.addParam("sysparm_name", "getDisplay");
ga.addParam('sysparm_table', 'incident');
ga.addParam('sysparm_value', "0598b22b877313003c1c8467a7cb0b71");
ga.getXMLWait();
return ga.getAnswer();
}("incident", "0598b22b877313003c1c8467a7cb0b71")); // Returns 'INC0010001'