GlideAjax - 클라이언트

  • 릴리스 버전: Washingtondc
  • 업데이트 날짜 2024년 02월 01일
  • 읽기11분
  • GlideAjax 클래스를 사용하면 클라이언트 스크립트가 스크립트 포함에서 서버측 코드를 호출할 수 있습니다.

    클라이언트 스크립트에서 GlideAjax 를 사용하려면 다음의 일반적인 단계를 따르십시오.

    1. GlideAjax 생성자를 호출하여 GlideAjax 인스턴스를 만듭니다. 생성자에 대한 인수로 호출할 메서드가 포함된 스크립트 포함 클래스의 이름을 지정합니다.
    2. addParam 메서드를 매개 변수와 호출하려는 스크립트 포함 메서드의 이름을 사용하여 sysparm_name 호출합니다.
    3. (선택 사항) addParam 메서드를 한 번 이상 호출하여 스크립트 포함 코드에 필요한 다른 매개 변수를 제공합니다.
    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. 반환
    유형 설명
    void

    이 예제에서 클라이언트 스크립트는 사용자를 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. 반환
    유형 설명
    void 이전에 getXMLWait()를 사용하여 호출한 서버측 메서드에서 반환된 결과입니다.

    GlideAjax - getXMLAnswer(함수 콜백, 객체 additionalParam, 객체 responseParam)

    프로세서를 비동기적으로 호출하고 응답의 응답 요소를 XML 형식으로 가져옵니다.

    표 6. 매개변수
    이름 유형 설명
    콜백 기능 콜백 함수입니다. 이 함수는 XML 형식의 응답의 응답 요소를 인수로 받습니다.
    추가alParam 객체 옵션입니다. 추가 매개변수의 이름-값 쌍입니다.
    응답매개변수 객체 옵션입니다. 콜백 함수의 두 번째 인수입니다.
    표 7. 반환
    유형 설명
    void

    첨부 파일 수를 반환합니다.

    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(함수 콜백)

    GlideAjax 객체와 연결된 메서드 및 매개변수를 실행하라는 요청을 서버에 보냅니다.

    서버는 요청을 비동기적으로 처리하고 준비가 되면 로 지정된 callback_function함수를 통해 결과를 반환합니다.

    표 8. 매개변수
    이름 유형 설명
    콜백 기능 서버에서 반환된 결과를 처리하기 위한 콜백 함수의 이름입니다.
    표 9. 반환
    유형 설명
    void
    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. 반환
    유형 설명
    void
    var ga = new GlideAjax('HelloWorld');
          ga.addParam('sysparm_name','helloWorld');
          ga.addParam('sysparm_user_name',"Bob");
          ga.getXMLWait();
          alert(ga.getAnswer());