AJAX

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. 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 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 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 para ser 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 descobrir 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: código do lado do cliente e código do lado do servidor.

    Hello World: 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 espere pelo resultado, uma função de retorno de chamada é usada para retornar o resultado, passado para a função getXML(). (Neste caso, é chamado de Hello WorldParse.)

    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ócio, 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 chamável pelo cliente.
    • 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 AbstratAjaxProcessor, incluindo initialize. Embora seja possível invocar métodos do objeto de superclasse que você substituiu, isso é complicado e é melhor evitá-lo.
    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á, Bob!" 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"
     
     });

    Script de cliente

    // 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 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 GlideAjax seja recebida, você pode usar getXMLWait(). No entanto, como isso tornará 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 AJAXEvaluateSincronamente.

    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á, bob!.

    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 A saída retorna
    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'