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«
intcontpiada : 118
Scaneando
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:

 






Acessando o servidor sem dar Refresh : Remote Script

O Remote Script é uma tecnologia utilizada na época do ASP 3 (também chamado de ASP Clássico) para a realização de comunicações Ajax com o servidor (e que na época nem possuiam esse nome)

Se está procurando mais sobre Ajax, pode gostar destes links :

Atlas in a Box Utilizando a CascadingDropDown do Atlas Usando (e abusando) com tabContainer e tabPanel As novidades do MS Ajax - Versão Final

Mas talvez você esteja procurando alguns truques de JavaScript com Event.Keycode


 

Uma das grandes dificuldades do desenvolvimento para Web é a impossibilidade de acessar uma informação no servidor sem dar refresh na página. Isso limita muito a aplicação, fazendo com que ela tenha que ser formada por uma sequencia de páginas distintas e gerando muita dificuldade na hora de montar uma interface gráfica um pouco mais complexa.

Alguns programadores desenvolveram um truque para solucionar o problema : mantinham um frame de tamanho 0 escondido no site. Desta forma quando necessitassem de alguma informação do servidor sem da refresh na página poderiam chamar uma página .ASP através desse frame de tamanho 0 e assim obter a informação.

A Microsoft criou uma solução parecida que, por ser da Microsoft, acabou se tornando a solução oficial : Remote Script. O Remote Script é baseado em tecnologias já existentes e, por isso, funciona tanto no IIS quanto no Netscape e outros browsers compatíveis com ambos.

O truque é baseado na utilização de um Applet que faz a comunicação entre o servidor e o client. Utilizando JavaScript pode-se disparar uma página ASP no servidor através desse Applet e obter o seu resultado.

Para que tudo isso seja possível é necessário instalar no servidor Web o applet e 2 arquivos, um .ASP e outro .HTM, que irão configurar as páginas do lado do servidor e do client (respectivamente) para a utilização do Applet. Acrescentamos em nossa área de Download o arquivo de instalação do Remote Script 1.0 . O applet e os 2 scripts são por default instalados em um diretório chamado _ScriptLibrary, dentro do site que você indicar.

O 1o passo para a utilização do Remote Script é montar a página ASP. Essa página ASP precisa ser montada de uma forma especial : Ela precisa conter uma classe a ser disparada pelo client. Caso você não conheça a construção de classes em ASP recomendo a leitura do artigo "Utilizando funções e Classes em ASP".

Veja como fica a montagem de uma classe para a multiplicação de um número por 2 :

<%
Class Calcular

Function Multiplicar(x)
Multiplicar=x*2
end function

End Class
%>

Feito isso é necessário habilitar essa página ASP para a utilização do RemoteScript. Para isso devemos fazer 3 alterações :

1) Fazer o Include do arquivo RS.ASP

<!--#include file="../_ScriptLibrary/RS.ASP" -->

O caminho do arquivo deve ser adaptado de acordo com a localização do diretório _ScriptLibrary.

2) Ativar a utilização de Remote Script nesta página :

<% RSDispatch %>

3) Expor a classe que foi criada para a aplicação Client. Para isso é necessario atribuir uma instância da classe criada a uma variável chamada Public_Description.

<% Set Public_Description=New Calcular %>

Veja como fica o código completo :

<!--#include file="../_ScriptLibrary/RS.ASP" -->
<%
Class Calcular

Function Multiplicar(x)
Multiplicar=x*2
end function

End Class

Set Public_Description=New Calcular
RSDispatch

%>

O próximo passo é fazer a montagem da página Client. Vamos montar uma página simples, com 2 textbox. Quando a 1a textbox perder o foco faremos a multiplicação, colocando o resultado na 2a textbox.

Veja o código inicial da página :

<HTML>
<head>
<script language="javascript>

function teclas() {

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

}

</script>
</head>
<Body>
Digite um número : <input type=text id=txtnumero name=txtnumero onkeypress="return teclas()">
<br>
Resultado : <input type=text id=txtresultado name=txtresultado>
</body>
</html>

Foi feita uma função que apenas permita a digitação de números na 1a caixa, apenas detalhe.

Agora precisamos ativar o uso do Remote Script nesta página. Para isso precisamos fazer 2 coisas :

1) Incluir o arquivo RS.HTM através de uma tag Script.

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

Novamente o path do arquivo pode mudar de acordo com onde o diretório _ScriptLibrary foi instalado

2) Ativar o uso do Remote Script na página.

<SCRIPT LANGUAGE="JavaScript">
RSEnableRemoteScripting("../_ScriptLibrary")
</SCRIPT>

O parâmetro é o caminho para o local onde encontra-se o applet (rsproxy.class)

Veja 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
}

}

RSEnableRemoteScripting("../_ScriptLibrary")

</script>
</head>
<Body>
Digite um número : <input type=text id=txtnumero name=txtnumero onkeypress="return teclas()">
<br>
Resultado : <input type=text id=txtresultado name=txtresultado>
</body>
</html>

Agora precisaremos fazer a chamada do método multiplicar no servidor. Para isso nós vamos nos referir a página ASP no servidor na forma de um objeto. O 1o passo é obter o objeto de referência a ela utilizando a função RSGetASPObject.

O código será inserido no evento onblur da caixa txtnumero. Veja como fica :

function calcular() {

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

}

É interessante observar que o resultado imediato da chamada do método é um objeto e não um valor. O valor de resultado é guardado na propriedade return_value deste objeto. Este objeto também conterá, eventualmente, códigos de erro gerados na chamada da classe.

Veja como fica o código final :

<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() {
obj=RSGetASPObject("ExRemoteScript.ASP")
objres=obj.Multiplicar(txtnumero.value)
txtresultado.value= objres.return_value
}

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>
</body>
</html>

ocê pode baixar o código fonte deste artigo

 

Dennes Torres
MCSD,MCSE,MCDBA





Envie seus comentįrios sobre este artigo

Nome :

E-mail :

Comentários :


Avise-me quando houverem novos comentįrios nesta pįgina

Veja abaixo os comentários já enviados :

Nome : Gilson E-Mail : gilson.carvalho@gmail.com
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 : Eduardo E-Mail : eduardo@gruponogues.com.br
Excelente explicação, mas tive uma dúvida, não seria a mesma coisa se vc carregar a informação via XML no cliente(js), exemplo:

var variavel = new ActiveXObject("Microsoft.xmlhttp")

O resultado seria o mesmo, né?
Nome : Gustavo E-Mail : gustavoarr@gmail.com
Estou tendo o mesmo problema do Gilson Failed to create ASP object for : ExRemoteScript.ASP alguma solução por favor aguardo resposta...
Nome : Gustavo E-Mail : gustavoarr@gmail.com
Estou tendo o mesmo problema do Gilson Failed to create ASP object for : ExRemoteScript.ASP alguma solução por favor aguardo resposta...
Nome : Antonio E-Mail : antoniosfs@bol.com.br
Ola estou tendo o mesmo problema que o Gilson e o Gustavo.
Por favor qual a soluções ?
Nome : hjkhjkjhkjhk E-Mail :
hjklhlhjlhjlhl
Nome : Hyogax E-Mail : yoga_jdi@hotmail.com
Deu erro pra mim na função Teclas() : objeto obrigatório
Nome : Joao Marcelo E-Mail : joao.dangremon@tools.com.br
Olá Dennes,
O RemoteScript está apresentando um erro recursivo infinito quando utilizo o applet do JRE1.6. Já soube de algo do tipo? Sabes como me ajudar?

Abraços.
Nome : Joao Marcelo Dangremon E-Mail : joao.dangremon@tools.com.br
Solução: trocar tudo por AJAX.

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