AJAX

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 5 minutes de lecture
  • AJAX (JavaScript et XML asynchrones) est un groupe de techniques de développement interdépendantes côté client 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, à l’aide de conventions de dénomination, autorisent l’utilisation de ces paramètres.

    Remarque :
    Cette fonctionnalité nécessite une connaissance de JavaScript.
    Utilisation de GlideAjax :
    • Initialisez GlideAjax avec le nom de l’include de script que vous souhaitez utiliser.
    • Lors de la création de l’include de script, vous devez définir le champ Nom pour qu’il soit exactement identique au nom de la classe.
    • Lors de la création de l’include de script, vous devez cocher la case Client joignable .
    • 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 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 renvoyer le résultat, passé à la fonction getXML( ). (Dans ce cas, il s’appelle HelloWorldParse.)

    La fonction getXMLWait() n’a pas besoin d’une fonction de rappel séparée, mais cela bloquera le client. Si la communication client-serveur prend beaucoup de temps (par exemple sur des réseaux lents), l’application semblera peu réactive et lente. Un exemple de getXMLWait() se trouve dans la section suivante.
    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

    Code côté serveur pour la fonction ci-dessus. Ne créez pas de règle métier, mais accédez plutôt à Définition du système > Script include et créer un script. Collez le code ci-dessous.
    Remarque :
    Vous devez définir le nom de l’include de script sur HelloWorld.
    • Le code sys_script_include doit étendre la classe AbstractAjaxProcessor et être activé par Glide AJAX.
    • Les noms de fonctions commençant par « _ » sont considérés comme privés et ne peuvent pas être appelés par le client.
    • Évitez de remplacer les méthodes d’AbstractAjaxProcessor, y compris initialize. Bien qu’il soit possible d’invoquer des méthodes de votre objet de superclasse que vous avez remplacé, c’est compliqué et il vaut mieux l’éviter complètement.
    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 indique « Bonjour Bob ! » lorsque vous consultez le formulaire.

    Renvoi de plusieurs valeurs

    É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 de 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 . Cela arrête la session jusqu’à ce que la réponse soit reçue.

    Si votre cas d’utilisation exige qu’aucun autre traitement ne puisse avoir lieu tant que la réponse GlideAjax n’a pas été reçue, vous pouvez utiliser getXMLWait(). Cependant, comme cela ralentira votre code et verrouillera 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.

    Remarque :
    N’utilisez pas AJAXEvaluateSynchronously.

    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 Le serveur dit bonjour Bob !.

    Code client.
    var ga = new GlideAjax('HelloWorld') ;
    ga.addParam('sysparm_name','helloWorld');
    ga.addParam('sysparm_user_name',"Bob");
    ga.getXMLWait(); 
    alert(ga.getAnswer());
    Code du script include côté serveur.
    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’assistance aux clients Ajax pour récupérer une valeur d’un client Ajax.

    Où l’utiliser

    Utilisez cet include de script partout où vous avez besoin de récupérer une valeur 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 La sortie renvoie
    getDisplay() Obtient la valeur d’affichage à partir de la liste de choix. aucun 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'