AJAX

  • Versão de lançamento: Washingtondc
  • Atualizado 1 de fev. de 2024
  • 5 min. de leitura
  • AJAX (JavaScript e XML assíncronos) é um grupo de técnicas de desenvolvimento inter-relacionadas do lado do cliente usadas para criar aplicações Web assíncronas.

    O AJAX permite que as aplicações da web enviem e recuperem informações de e para um servidor em segundo plano, sem afetar a experiência do usuário com a página da web exibida.

    GlideAjax

    A classe GlideAjax permite a execução de código do lado do servidor do cliente. As chamadasGlideAjax passam parâmetros para as inclusões de script e, usando convenções de nomenclatura, permite o uso desses parâmetros.

    Nota:
    Esta funcionalidade requer conhecimento de JavaScript.
    Usando o GlideAjax:
    • Inicialize o GlideAjax com o nome da inclusão de script que você deseja usar.
    • Ao criar a inclusão de script, você deve definir o campo de nome como exatamente igual ao nome da classe.
    • Ao criar a inclusão de script, você deve marcar a caixa de seleção Cliente chamável.
    • Especifique o parâmetro sysparm_name. O GlideAjax usa sysparm_name para encontrar qual função usar.
    • Quaisquer parâmetros extras podem ser passados, e todos devem começar com sysparm_. Evite usar nomes de parâmetro predefinidos:
      • sysparm_name
      • sysparm_function
      • sysparm_value
      • sysparm_type
    • O código é executado com as funções getXML() ou getXMLWait().

    Para obter informações adicionais, consulte a API GlideAjax.

    Exemplos de GlideAjax assíncrono

    Existem duas partes no script GlideAjax assíncrono: o código do lado do cliente e o do lado do servidor.

    Olá, mundo: retornando um valor do servidor

    Lado do cliente

    Este código é executado no cliente (o navegador da web). Crie um client script normalmente. Isso envia os parâmetros para o servidor, que faz o processamento. Para que o cliente não aguarde o resultado, uma função de retorno de chamada é usada para retornar o resultado, passado para a função getXML(). (Neste caso, é chamado de HelloMundoParse.)

    A função getXMLWait() não precisa de uma função de retorno de chamada separada, mas isso bloqueará o cliente. Se a comunicação cliente-servidor demorar muito (por exemplo, em redes lentas), a aplicação parecerá lenta e sem resposta. Um exemplo de getXMLWait() está na seção a seguir.
    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); }

    Lado do servidor

    O código do lado do servidor para a função acima. Não crie uma regra de negócios, mas navegue até Definição do sistema > Inclusão de script e crie um novo script. Cole o código abaixo.
    Nota:
    Você deve definir o nome da inclusão de script como Hello World.
    • O código sys_script_include deve estender a classe ResumoAjaxProcessor e ser cliente chamável.
    • Nomes de função que começam com "_" são considerados privados e não podem ser chamados pelo cliente.
    • Evite substituir métodos de ResumoAjaxProcessor, incluindo inicializar. Embora seja possível invocar métodos do objeto de superclasse que você substituiu, é complicado e deve ser evitado.
    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     
        }
     });
    Isso resulta em uma caixa de alerta que diz "Olá, Rob!" ao visitar o formulário.

    Retornando vários valores

    Como a resposta é um documento XML, não estamos limitados a retornar um único valor de resposta. Aqui está um exemplo mais complexo que retorna vários nós e atributos XML.

    Inclusão de script do processador 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"
     
     });

    Client scripts

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

    Resposta 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>

    Exemplos de GlideAjax síncrono

    Use síncrono quando o script não puder continuar sem a resposta do GlideAjax. Isso interrompe a sessão até que a resposta seja recebida.

    Se o seu caso de uso exigir que nenhum processamento adicional possa ocorrer até que a resposta do GlideAjax seja recebida, você poderá usar getXMLWait(). No entanto, como isso deixará seu código mais lento e bloqueará a sessão do usuário até que a resposta seja recebida, geralmente é recomendável usar getXML() com uma função de retorno de chamada.

    Nota:
    Não use AJAXEvaluateSynchrononly.
    Nota:
    O método getXMLWait() não está disponível em aplicações com escopo.

    Este código resulta em um alerta do lado do cliente que exibe O servidor diz Olá, Boob!.

    O código do cliente.
    var ga = new GlideAjax('HelloWorld') ;
    ga.addParam('sysparm_name','helloWorld');
    ga.addParam('sysparm_user_name',"Bob");
    ga.getXMLWait(); 
    alert(ga.getAnswer());
    O código de inclusão de script do lado do servidor.
    var HelloWorld = Class.create();
    HelloWorld.prototype = Object.extendsObject(AbstractAjaxProcessor, {
    helloWorld: function() 
     { return "The Server Says Hello " + this.getParameter('sysparm_user_name') + "!"; } } );

    AJAXClientHelper

    Fornece funções de ajuda para que os clientes Ajax recuperem um valor de um cliente Ajax.

    Onde usar

    Use esta inclusão de script sempre que precisar recuperar um valor de um cliente Ajax.

    Resumo do método

    Resumo do método Descrição
    getDisplay() Obtém o valor de exibição da lista de seleção.

    Detalhe do método

    Método de API Descrição Parâmetros de entrada Retornos de saída
    getDisplay() Obtém o valor de exibição da lista de seleção. nenhum O valor de exibição.

    Curva

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