AJAX
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.
- 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.)
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
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.
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!.
var ga = new GlideAjax('HelloWorld') ;
ga.addParam('sysparm_name','helloWorld');
ga.addParam('sysparm_user_name',"Bob");
ga.getXMLWait();
alert(ga.getAnswer());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'