GlideAjax - Client

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 5 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 de l’include de script qui contient la méthode que vous voulez appeler.
    2. Appelez la méthode addParam avec le paramètre et le sysparm_name nom de la méthode script-include que vous souhaitez appeler.
    3. Facultatif. Appelez la méthode addParam une ou plusieurs fois pour fournir au code script-include les autres paramètres dont il a besoin.
    4. 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.

    Tableau 1. Paramètres
    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 .

    Vous pouvez exécuter addParam plusieurs fois avec différents paramètres et valeurs.
    Remarque :
    Le premier appel à addParam doit être avec 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 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().

    Tableau 4. Paramètres
    Nom Type Description
    aucun
    Tableau 5. Renvoie
    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.

    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 (en anglais seulement) Objet Facultatif. Deuxième argument pour la fonction de rappel.
    Tableau 7. Renvoie
    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.

    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 d’exécution de la méthode et des paramètres associés à cet objet GlideAjax .

    Le serveur traite la demande de manière synchrone et ne traitera pas d’autres demandes du client tant qu’elles n’auront 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());