Skip Navigation Links



Translate this page now :



»Programação
»Programação.NET
»Banco de Dados
»Webdesign
»Office
» Certificações Microsoft 4
»Treinamentos4
»Programação 4
»Webdesign«
»Office & User Tips«
»Grupos de Usuários
»Células Acadêmicas«

Sobre-carregado
Você já está cadastrado e participa do grupo de usuários de sua cidade ? Se não, comente o porque.
 
 
Faça um pequeno teste com 10 questões de VB
.:.
Teste seus conhecimentos em Visual Basic, SQL Server e ASP 3.0 com nossas provas on-line
.:.
Aprimore seus conhecimentos em programação com nosso treinamento on-line de lógica de programação
.:.
Veja nosso calendário de treinamentos
Gostou da Página?
Então

para um amigo!

Pesquisa personalizada
Pesquisar Dicas:

 






Utilizando chamadas Assíncronas com Remote Script


Em um artigo anterior vimos como utilizar o Remote Script para fazer acesso a dados do servidor sem a necessidade de darmos refresh na página.

Mas, como vocês terão constatado caso tenham testado o exemplo, durante a chamada ao servidor o browser do usuário fica travado. Esse travamento pode gerar incômodos para o usuário.

Para resolver isso nós podemos fazer uma chamada assíncrona ao Remote Script, ao invés da chamada síncrona como foi feito no artigo anterior. Fazer uma chamada assíncrona significa que o browser não ficará parado esperando a resposta, ele continuará o processamento normalmente e será avisado quando a resposta do servidor chegar.

Para exemplificar vamos utilizar o mesmo exemplo do artigo sobre Remote Script . Veja com era a função de chamada do Remote Script :

function calcular() {

obj=RSGetASPObject("ExRemoteScript.ASP")
objres=obj.Multiplicar(txtnumero.value)
txtresultado.value= objres.return_value

}

Em uma chamada Assíncrona precisamos ter uma função de retorno, através da qual será feito o aviso de que o resultado chegou. Essa função precisará ser passada como parâmetro para o método multiplicar. Observe que o código do método na página ASP não muda, ele continua tendo apenas um parâmetro. As funções do remote script reconhecem que este parâmetro que estamos passando a mais é o nome da função de Call Back.

Veja :

function calcular() {

obj=RSGetASPObject("ExRemoteScript.ASP")
objres=obj.Multiplicar(txtnumero.value,Mostrar)
}

Precisamos agora criar a função Mostrar. Ela deverá receber um parâmetro, que é o objeto de resultado do Remote Script. Veja :

function Mostrar(x) {

txtresultado.value=x.return_value;

}

Podemos realizar um tratamento de erro na função de Call Back. O objeto de retorno (no caso x) tem uma propriedade chamada Status que pode ser utilizada para testar o sucesso ou a falha da operacao. Veja os valores disponíveis :

Códigos de Status
-1 Falhou
0 Completada com sucesso
1 Ainda não foi completada (em caso de chamada assíncrona)

Eis a função mostrar com o tratamento de erro :

function Mostrar(x) {

if (x.status!=0) {
divmensagem.innerHTML="Deu Erro"
return
}
txtresultado.value=x.return_value;

}

Podemos inserir uma mensagem de aguarde, aproveitando o recurso da chamada assíncrona. Veja como fica o código completo :

<HTML>
<head>
<SCRIPT LANGUAGE="JavaScript" src="../_ScriptLibrary/RS.HTM"></script>

<script language="javascript">

function teclas() {

if (event.KeyCode<48 || event.KeyCode > 57) {
event.KeyCode=0
event.ReturnCode=false
}

}

function calcular() {
divmensagem.innerHTML="Aguarde..."
obj=RSGetASPObject("ExRemoteScript.ASP")
objres=obj.Multiplicar(txtnumero.value,Mostrar)
}

function Mostrar(x) {

if (x.status!=0) {
divmensagem.innerHTML="Deu Erro"
return
}
txtresultado.value=x.return_value
divmensagem.innerHTML=""
}

RSEnableRemoteScripting("../_ScriptLibrary")
</script>

</head>
<Body>
Digite um número : <input type=text id=txtnumero name=txtnumero language="javascript" onkeypress="return teclas()" onblur="return calcular()">
<br>
Resultado : <input type=text id=txtresultado name=txtresultado>
<p>
<div id=divmensagem></div>
</body>
</html>

Baixe o código fonte deste artigo.

Dennes Torres
MCSD,MCSE,MCDBA

 





Envie seus comentrios sobre este artigo

Nome :

E-mail :

Comentários :


Avise-me quando houverem novos comentrios nesta pgina

Veja abaixo os comentários já enviados :

Nome : Luiz E-Mail : ponce.idt@terra.com.br
Dennes, estou com algumas duvidas...
Os campos nao podem ficar dentro de um form? Pois aqui da problema quando eu coloco dentro do mesmo.
Outra duvida!!!Eu tentei e nao consegui utilizar dois campos como entrada.

objres=obj.Multiplicar(txtnumero.value,Mostrar)

tentei fazer assim
objres=obj.Multiplicar(a,b,Mostrar)


e na pagina ASP
eu modifiquei o: function(x)
para function(x,y)
e fiz as rotinhas denteo do asp.

Nome : Gilson E-Mail : aww.gilson@terra.com.br
Instalei o "rs10ben.exe", baixei o "artigo2502.zip", mas quando vou testar acontece o seguinte erro:
====================================================
Failed to create ASP object for : ExRemoteScript.ASP
====================================================
Uso o Windows 98 SE, com PWS,
será esse o motivo?
Nome : Gilson E-Mail : gilson.carvalho@gmail.com
Por favor, se possível responder o tópico no email:
gilson.carvalho@gmail.com

Grato
Nome : decdf E-Mail :
cccc
Nome : Itamar E-Mail : itamar.santos@unibanco.com.br
Bem, não sei se o lugar é aqui, mas ai vai minha pergunta:
Quero chamar uma página da intranet a partir de um programa que executar VBScript, mas não consigo escrever esta chamada em VBScript, alguém tem um exemplo deste tipo de chamada?
Grato
Itamar


Nome : Bene-Hur E-Mail : bene-hurp@hotmail.com
Eu precisava de um script que realizace a chamada atraves de um link, e que inserice o link chamado na mesma página. Me mande o comando por e-mail se possivel. Vlw!

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Conheça mais sobre o nosso site :

::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::



Quer saber mais?
Faça um curso na Búfalo Informática, Treinamento e Consultoria e
Prepare-se para o Mercado!
Veja o que a Búfalo tem para você.

� Búfalo Informática, Treinamento e Consultoria - Rua Álvaro Alvim, 37 Sala 920 - Cinelândia - Rio de Janeiro / RJ
Tel.: (21)2262-1368 (21) 9240-5134 (21) 9240-7281 e-Mail:
contato@bufaloinfo.com.br