GlideAjax - クライアント

  • リリースバージョン: Australia
  • 更新日 2026年03月12日
  • 所要時間:12分
  • GlideAjax クラスを使用すると、クライアントスクリプトがスクリプトインクルード内のサーバーサイドコードを呼び出すことができます。

    クライアントスクリプトで GlideAjax を使用するには、次の一般的な手順に従います。

    1. GlideAjax コンストラクターを呼び出して、GlideAjax インスタンスを作成します。コンストラクターの引数として、呼び出すメソッドを含むスクリプトインクルードクラスの名前を指定します。
    2. sysparm_name パラメーターと呼び出すスクリプトインクルードメソッドの名前を指定して、addParam メソッドを呼び出します。
    3. オプション。addParam メソッドを 1 回以上呼び出して、スクリプトインクルード コードに必要な他のパラメーターを指定します。
    4. getXML() を呼び出してサーバー側のコードを実行します。
      注:
      getXML() は非同期であり、他のクライアントコードの実行を妨げないため、コードを実行するための推奨される方法です。別のメソッド getXMLWait() も使用できますが、推奨されません。getXMLWait() を使用すると実行順序は保証されますが、アプリケーションが応答しないように見え、それを使用するアプリケーションのユーザーエクスペリエンスが大幅に低下する可能性があります。getXMLWait() は、スコープ対象のアプリケーションでは使用できません。
    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 (文字列 class_name)

    GlideAjax のコンストラクター。

    表 : 1. パラメーター
    名前 タイプ 説明
    class_name 文字列 実行するメソッドを含むサーバー側クラスの名前。

    この例では、クライアントスクリプトがユーザーを Fred Luddy に設定し、スクリプトインクルードを呼び出してマネージャーを取得します。

    // 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)

    この GlideAjax オブジェクトに関連付けられたサーバー側の関数に渡されるパラメーター名と値を指定します。

    異なるパラメーターと値を使用して addParam を複数回実行できます。
    注:
    addParam の最初の呼び出しは、パラメーターsysparm_name と呼び出すサーバー側メソッドの名前を使用して行う必要があります。サーバー側のコードは、クライアントスクリプトが getXML() または getXMLAnswer() を呼び出すまで実行されません。
    表 : 2. パラメーター
    名前 タイプ 説明
    parm_name 文字列 渡すパラメーターの名前。(名前は sysparm_ で始まる必要があります。
    parm_value 文字列 parm_nameにアサインする値。
    表 : 3. 返される内容
    タイプ 説明
    なし

    この例では、クライアントスクリプトがユーザーを Fred Luddy に設定し、スクリプトインクルードを呼び出してマネージャーを取得します。

    // 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()

    getXMLWait() を介してクライアントから呼び出されたサーバー側のメソッドから結果を取得します。

    表 : 4. パラメーター
    名前 タイプ 説明
    なし
    表 : 5. 返される内容
    タイプ 説明
    なし 以前に getXMLWait() で呼び出されたサーバー側のメソッドによって返された結果。

    GlideAjax - getXMLAnswer(Function callback, Object additionalParam, Object responseParam)

    プロセッサーを非同期に呼び出し、応答の answer 要素を XML 形式で取得します。

    表 : 6. パラメーター
    名前 タイプ 説明
    コールバック 関数 コールバック関数。この関数は、応答の answer 要素を XML 形式で引数として受け取ります。
    additionalParam オブジェクト オプション。追加パラメーターの名前と値のペア。
    responseParam オブジェクト オプション。コールバック関数の 2 番目の引数。
    表 : 7. 返される内容
    タイプ 説明
    なし

    この例では、GlideAjax を使用して指定された sysid の添付ファイルの数を取得し、その数で UI を更新します。また、コールバック関数に追加のパラメーター (タイムスタンプなど) を渡します。これは、要求がいつ行われたかのデバッグや追跡に使用できます。

    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 (関数コールバック)

    この GlideAjax オブジェクトに関連付けられたメソッドとパラメーターを実行する要求をサーバーに送信します。

    サーバーは要求を非同期に処理し、準備ができたら、 callback_functionとして指定された関数を介して結果を返します。

    表 : 8. パラメーター
    名前 タイプ 説明
    コールバック 関数 サーバーから返された結果を処理するコールバック関数の名前。
    表 : 9. 返される内容
    タイプ 説明
    なし
    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()

    この GlideAjax オブジェクトに関連付けられたメソッドとパラメーターを実行する要求をサーバーに送信します。

    サーバーは要求を同期的に処理し、完了するまでクライアントからのそれ以上の要求は処理しません。結果を取得するには、クライアントが getAnswer() を呼び出す必要があります。getXMLWait() を使用すると実行順序は保証されますが、アプリケーションが応答しないように見え、それを使用するアプリケーションのユーザーエクスペリエンスが大幅に低下する可能性があります。代わりに getXML() を使用することをお勧めします。
    注:
    getXMLWait() は、スコープ対象のアプリケーションでは使用できません。
    表 : 10. パラメーター
    名前 タイプ 説明
    なし
    表 : 11. 返される内容
    タイプ 説明
    なし
    var ga = new GlideAjax('HelloWorld');
          ga.addParam('sysparm_name','helloWorld');
          ga.addParam('sysparm_user_name',"Bob");
          ga.getXMLWait();
          alert(ga.getAnswer());