[AJAX]Alguem me explica como trabalhar com AJAX? - Resolvido

Armadillo

Folding Member
Mais uma guerra com o JavaScript e html.
Depois de googlar e nao encontrar nada suficientemente simples, vim aqui pedir-vos ajuda.

Então é assim, preciso de fazer (inicialmente) uma coisa muito simples:
Num html, dado um ID de cliente, obter o seu nome.
Eu já tenho o html feito, só nao sei como enviar o id para um asp e devolver o nome de novo ao html.

Só preciso de uma coisa tipo uma textbox e depois, numa 2ª textbox, aparecer lá o nome do cliente.
Se alguem me conseguir explicar isto, ficava muito agradecido;)
 
Última edição:
Depois de googlar e nao encontrar nada suficientemente simples, vim aqui pedir-vos ajuda.

In this method, you can instantiate an XMLHttpRequest object that can then call functions from the server. The code is in the public domain.

Código:
function getNewHTTPObject()
{
        var xmlhttp;

        /** Special IE only code ... */
        /*@cc_on
          @if (@_jscript_version >= 5)
              try
              {
                  xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
              }
              catch (e)
              {
                  try
                  {
                      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
                  }
                  catch (E)
                  {
                      xmlhttp = false;
                  }
             }
          @else
             xmlhttp = false;
        @end @*/

        /** Every other browser on the planet */
        if (!xmlhttp && typeof XMLHttpRequest != 'undefined')
        {
            try
            {
                xmlhttp = new XMLHttpRequest();
            }
            catch (e)
            {
                xmlhttp = false;
            }
        }

        return xmlhttp;
}
Now you can call XMLHTTPRequest

Código:
var xmlHttp = getHTTPObject();

function getDynamicData()
{
  var url = "http://url/that/returns/dynamic/content";

  xmlHttp.open('GET', url, true);
  xmlHttp.onreadystatechange = callbackFunction;
  xmlHttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  xmlHttp.send(null);
}
The callback function set in xmlHttp.onreadystatechange will be called when data is back from the server

Código:
var syndLinkRequest = getNewHTTPObject();

function callbackFunction()
{
  if (syndLinkRequest.readyState != 4)
    return;

  var result = xmlHttp.responseText;

  /* if you've returned javascript instead of xml or text, 
  you can eval(result) to access the javascript variables returned.
  */
}
como é que eu agora uso isto?????
 
só mesmo tu para me ajudares slack_guy (ja te tou a dever uns copos!).

malta, para quem fez aplicações exe, isto de httprequest e misturar 38,5 linguagens para fazer uma unica coisa parece chinoca!!

O que eu quero fazer é obter o nome de um cliente dado um id. Para simplificar, podia-se definir hardcoded (para nao meter SQL ao barulho) apenas, tipo, 3 id's de clientes, fazendo uns cases (asp, tb pode ser em php um exemplo).Podiam me exemplificar ou explicar como fazer o que eu quero?
Ou seja, como é que aplico estas funcoes em js? (btw slack, o form vai ser o outro em que tu me ajudaste...).

Obrigado e desculpem a minha ignorancia:Sad_anim:

offtopic: slack, o link até funciona :)
 
Obrigadao Slack_guy!!
Mas mesmo assim, falta-me um danoninho... :(

vou postar os meus 2 files um html e outro asp

html.html
Código:
<html>
    <head>
        <title>Teste Ajax!</title>    </head>
<script type='text/javascript'>

  var http_request = false;

  function makeRequest(url, parameters) {

      http_request = false;
      http_request = new XMLHttpRequest();
      if (http_request.overrideMimeType) {
          http_request.overrideMimeType('text/xml');
      }
      if (!http_request) {
          alert('Cannot create XMLHTTP instance');
          return false;
      }

      http_request.onreadystatechange = preenche_nome;
      http_request.open('GET', url + '?' + parameters, true);
      http_request.send(null);
      
  }

    function preenche_nome() {
        if (http_request.readyState == 4) {
            if (http_request.status == 200) {

                var string = http_request.responseText;
                document.getElementById('nomecliente').value=string;

            } else {
                alert('O Cliente não existe!');
            }
        }
    }


    </script>

<body>
    <form action=''>
        (IDs válidos: 0 -> 3)<br />
        ID Cliente: <input type='text' name='idcliente' name='idcliente' onkeyup="javascript: makeRequest('http://localhost/asp.asp','idcliente=' + this.value)" >
        Nome Cliente: <input type='text' name='nomecliente' id='nomecliente'>
    </form>


</body>
</html>
asp.asp

Código:
<%
idcliente=cint(Request.QueryString ("idcliente"))

dim ids_validos(3) as string
ids_validos(0) ="n0"
ids_validos(1) ="n1"
ids_validos(2) ="n2"
ids_validos(3) ="n3"


response.write (ids_validos(idcliente))      'acho que o problema está aqui 
%>
acho que o problema está na minha ultima linha do asp, mas o que me falta??

Mais uma vez, desculpem qualquer coisinha.:Sad_anim:
Obrigado
 
Que resultado tens para a página http://localhost/asp.asp?idcliente=1 ?
Deveria ser apenas 'n1'...

EDIT:
No exemplo que te dei, usei onkeyup. Lembra-te de usar onblur, caso contrário bombardeias o server com pedidos por cada tecla... o que pode não ser conveniente :-)

EDIT 2:
Penso que para funcionar no IE é preciso mais 'molho'... qualquer coisa como tinhas na função getNewHTTPObject() mais acima.
 
Última edição:
Ja está resolvido.
O problema era na declaração de variaveis: nao posso definir o tipo de dados em ASP (é verdade, nao te rias... :002:anda aqui um gaijo a fazer as coisas como deve ser e a M$ depois faz destas:002:)

Código:
dim ids_validos(3) [s]as string[/s]
Em relação ao IE, esquece - ninguem usa essa coisa por estas bandas, so FF :)

Sempre que precisares de alguma coisa VB, podes contar comigo. Tás cá dentro!!
Slack, mais uma vez, mto obrigado.
 
lololol
Pá, é o que tenho para oferecer, mas nunca se sabe do que se vai precisar... (E nao é assim tao mau como julgas)
(ao menos nao fico fechado nisso, sempre ando a experimentar o mundo opensource - quem sabe daqui a uns anos ajudo-te eu :p)

Ja agora, estes scripts funcionam no IE, dá para acreditar??

Muchas gracias
 
Pá, é o que tenho para oferecer, mas nunca se sabe do que se vai precisar... (E nao é assim tao mau como julgas)
Trabalhei com o VB3 (nos idos anos de 93/4). Não creio que hoje esteja melhor... :002:

Ja agora, estes scripts funcionam no IE, dá para acreditar??
Acredito se for no IE7. no IE6... nem sei como é que há coisas que funcionam no IE6... 8|

EDIT:
BTW... o programa que estás a fazer, já eu fiz em ASP (1999/2000) e, mais recentemente (2006/2008), em Perl ;-)
 
Última edição:
Trabalhei com o VB3 (nos idos anos de 93/4). Não creio que hoje esteja melhor... :002:
Acredita que esta muito melhor, ja temos classes desde 1996/7, e da para fazer umas coisas engraçadas com OO.

Acredito se for no IE7. no IE6... nem sei como é que há coisas que funcionam no IE6... 8|
IE7, claro! O IE6 ja morreu e foi para o inferno:004:

EDIT:
BTW... o programa que estás a fazer, já eu fiz em ASP (1999/2000) e, mais recentemente (2006/2008), em Perl ;-)

Nao queres arranjar?? just kidding!!

Obrigado man!

EDIT: este foi o meu 1º AJAX. Espero nao vir reclamar pra'qui mais com este tema.:victory:
 
Última edição:
Nao é tao facil assim coverter/substituir uma aplicaçao web com 10 anos de codigo, a sobreviver num "ecosistema" muito condicionado e controlado, com "n" problemas ja conhecidos ou corrigidos (feito por outros "n" programadores), com dezenas de milhares de clientes a poderem aceder ao nosso website e sempre a receber encomendas. Simplesmente, essa tarefa é capaz de demorar um ano, desde o planeamento até lançar uma alpha.

Mas ja tamos a pensar em renovar o software TODO, web e gestao(slack_guy para ti em VB3-ainda fazemos modulos em vb3), por isso vai sair desgraça dupla.

Se mudarmos (que temos!), nem sei se vamos sequer a usar o .net2008! provavelmente vamos usar a versao seguinte (ja se fala da reestruturação do site há uns 5 anos e o tempo vai passando... e depois faz-se mais umas alterações ao site, e ele la se vai aguentando... ... ...)
 
Nao é tao facil assim coverter/substituir uma aplicaçao web com 10 anos de codigo, a sobreviver num "ecosistema" muito condicionado e controlado, com "n" problemas ja conhecidos ou corrigidos (feito por outros "n" programadores), com dezenas de milhares de clientes a poderem aceder ao nosso website e sempre a receber encomendas. Simplesmente, essa tarefa é capaz de demorar um ano, desde o planeamento até lançar uma alpha.

Mas ja tamos a pensar em renovar o software TODO, web e gestao(slack_guy para ti em VB3-ainda fazemos modulos em vb3), por isso vai sair desgraça dupla.

Se mudarmos (que temos!), nem sei se vamos sequer a usar o .net2008! provavelmente vamos usar a versao seguinte (ja se fala da reestruturação do site há uns 5 anos e o tempo vai passando... e depois faz-se mais umas alterações ao site, e ele la se vai aguentando... ... ...)

Ah, pensava ser um projecto novo até para motivos de aprendizagem, daí a sugestão. :)
 
Ui. Tens aí umas dores de cabeça valentes. Bem, ânimo e espírito positivo é o que é preciso.

Por outro lado repara, se fazem isso tudo em vb do séc.XVIII será mais fácil entender os conceitos do .net onde muita da papinha já está feita. (Claro que irá ser moroso, mas isso já é um dado adquirido).
 
aprendizagem sim (andamos a desenvolver em tecnologia mais que obsoleta, por isso ajax é bem vindo bem como um .net qualquer ja seria uma grande evolução).

projecto novo nao, este ja tem raizes até ao kernel!!! :lol:

na boa!:p

Ui. Tens aí umas dores de cabeça valentes. Bem, ânimo e espírito positivo é o que é preciso.
Animo positivo e o pessoal da TZ é o que eu preciso, que ja só tenho o Tico a funcionar (o Teco foi ter com IE6 :p)



Por outro lado repara, se fazem isso tudo em vb do séc.XVIII será mais fácil entender os conceitos do .net onde muita da papinha já está feita. (Claro que irá ser moroso, mas isso já é um dado adquirido).


Mais ou menos... quando oum gaijo ja tem as rotinas todas feitas há uns 300 anos, depois de ter ja feito rotinas para debitar um RecordSet á nossa maneira numa datagrid ja toda modificada por nós e depois no .net aparece-nos á frente um dataset, ai um gaijo fica umas 2 horas a perceber aquilo.
Mas é assim!! Ossos do oficio.

Cumpz
 
Última edição pelo moderador:
Yap, provavelmente o melhor será efectuar a migração completa para .Net e depois, aos poucos, passar (o que tiver de ser passado, convém não esticar a corda) para o AJAX.
 
Careful with that axe, Armadillo. AJAX pode trazer mais problemas que soluções. E ao nível da usabilidade, pode ser uma verdadeira nóia se a coisa não for bem trabalhada - que é o que acontece em 99,999% dos casos.

Nao me referia a aplicar exaustivamente o AJAX, mas sim ficar com mais uma funcionalidade no nosso portfolio de programador. Bem,a nivel de usabilidade nem se fala...:007: Quando tento usar apenas o teclado para navegar numa página, fica muito complicado em sites simples, quanto mais numa com ajax.

Indo um pouquinho para o offtopic, na minha opiniao, isto de ajax-html-asp e afins, mais dia menos dia tem que acabar, porque simplesmente nao é pratico programar em com "n" linguagens a fazer pedidos umas ás outras e a tratar de CSS só prara tar de acordo com as normas da w3c (pelo menos eu gostava que HTML, CSS e todas esta tecnologias de webbrowser desaparecessem), ou passamos a utilizar umas frameworks pesadotas.

Ainda no outro dia estava a dar o "Imagens de marca" na SIC-N, e eles anunciavam que o site deles tinha cerca de 75.000. Isto é uma brutalidade!! Assim olhando de relance, este site feito na framework asp.net nao levava mais de 10.000/15.000 linhas de codigo (ou quem fez o site ainda cobra á linha :P).

On topic: AJAX já tá percebido!!
 
Back
Topo