GlideAjax : client

  • Rversion finale: Zurich
  • Mis à jour 31 juil. 2025
  • 6 minutes de lecture
  • 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.

    1. Créez une instance GlideAjax en appelant le constructeur GlideAjax . En tant qu’argument du constructeur, spécifiez le nom de la classe d’include de script qui contient la méthode que vous souhaitez appeler.
    2. Appelez la méthode addParam avec le sysparm_name paramètre et le nom de la méthode script-include que vous souhaitez appeler.
    3. Facultatif. Appelez la méthode addParam une ou plusieurs fois pour fournir le code d’include de script avec d’autres paramètres dont elle a besoin.
    4. Exécutez le code côté serveur en appelant getXML().
      Remarque :
      getXML() est la méthode préférée pour l’exécution du 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.

    Tableau 1. Paramètres
    Nom Type Description
    class_name Chaîne Nom de la classe côté serveur qui contient la méthode que vous souhaitez exécuter.

    Dans cet exemple, un script client définit l’utilisateur sur Fred Luddy, puis appelle un script include 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 et une valeur de paramètre à transmettre à la fonction côté serveur associée à cet objet GlideAjax .

    Vous pouvez exécuter addParam plusieurs fois avec des paramètres et des valeurs différents.
    Remarque :
    Le premier appel à addParam doit concerner le paramètre sysparm_name et le nom de la méthode côté serveur que vous souhaitez appeler. Le code côté serveur ne s’exécute pas tant que le script client n’appelle pas getXML() ou getXMLAnswer().
    Tableau 2. Paramètres
    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.
    Tableau 3. Renvoie
    Type Description
    nul

    Dans cet exemple, un script client définit l’utilisateur sur Fred Luddy, puis appelle un script include 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().

    Tableau 4. Paramètres
    Nom Type Description
    aucun
    Tableau 5. Renvoie
    Type Description
    nul Résultat renvoyé par la méthode côté serveur précédemment appelée avec getXMLWait().

    GlideAjax : getXMLAnswer(Function callback, Object 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.

    Tableau 6. Paramètres
    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 Objet Facultatif. Deuxième argument en faveur de la fonction de rappel.
    Tableau 7. Renvoie
    Type Description
    nul

    Cet exemple récupère le nombre de pièces jointes pour un sysid donné à l’aide de GlideAjax et met à jour l’interface utilisateur avec le nombre. Il transmet également un paramètre supplémentaire (par exemple, un horodatage) à la fonction de rappel, qui peut être utilisé pour le débogage ou le suivi de la date d’exécution de la demande.

    function updateAttachmentCount(sysid) {
      var ga = new GlideAjax('AttachmentAjax');
      ga.addParam('sysparm_type', 'attachmentCount');
      ga.addParam('sysparm_value', sysid);
    
      // Adding an additional parameter object
      var additionalParam = { timestamp: new Date().toISOString() };
    
      ga.getXMLAnswer(numberOfAttachments, additionalParam, sysid); 
    }
    
    function numberOfAttachments(answer, additionalParam, sysid) {
      var number = parseInt(answer);
    
      console.log('Additional Param:', additionalParam); // Debugging
      console.log('Timestamp:', additionalParam?.timestamp); // Example usage
    
      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 pour exécuter la méthode et les paramètres associés à cet objet GlideAjax .

    Le serveur traite la demande de manière asynchrone et, lorsqu’il est prêt, renvoie les résultats via la fonction spécifiée comme .callback_function

    Tableau 8. Paramètres
    Nom Type Description
    rappel Fonction Nom de la fonction de rappel pour traiter les résultats retournés par le serveur.
    Tableau 9. Renvoie
    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 pour exécuter la méthode et les paramètres associés à cet objet GlideAjax .

    Le serveur traite la demande de façon synchrone et ne traitera pas d’autres demandes du client tant qu’il n’aura pas terminé. Pour récupérer les résultats, le client doit appeler getAnswer(). 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. Nous vous recommandons d’utiliser getXML() à la place.
    Remarque :
    getXMLWait() n’est pas disponible pour les applications incluses dans le périmètre.
    Tableau 10. Paramètres
    Nom Type Description
    aucun
    Tableau 11. Renvoie
    Type Description
    nul
    var ga = new GlideAjax('HelloWorld');
          ga.addParam('sysparm_name','helloWorld');
          ga.addParam('sysparm_user_name',"Bob");
          ga.getXMLWait();
          alert(ga.getAnswer());