1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

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

Discussão em 'Web Development' iniciada por Armadillo, 28 de Janeiro de 2008. (Respostas: 20; Visualizações: 2453)

  1. Armadillo

    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: 28 de Janeiro de 2008
  2. Armadillo

    Armadillo Folding Member

    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 ... */
            [email protected]_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?????
     
  3. slack_guy

    slack_guy Power Member

    Só te metes em alhadas! :-)

    Que valores tens na variável 'var result = xmlHttp.responseText;' ?
    Terás de fazer o parse (em JavaScript) dos valores que aí tiveres. À partida, terás aí uma estrutura de dados (não obrigatoriamente).

    Terás os resultados da página pedida: http://url/that/returns/dynamic/content
     
  4. Armadillo

    Armadillo Folding Member

    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 :)
     
  5. Armadillo

    Armadillo Folding Member

    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
     
  6. slack_guy

    slack_guy Power Member

    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: 28 de Janeiro de 2008
  7. Armadillo

    Armadillo Folding Member

    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.
     
  8. slack_guy

    slack_guy Power Member

    Se precisar de alguma coisa VB.... é porque estou pra morrer! Chama o cangalheiro! :-)
     
  9. Armadillo

    Armadillo Folding Member

    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
     
  10. slack_guy

    slack_guy Power Member

    Trabalhei com o VB3 (nos idos anos de 93/4). Não creio que hoje esteja melhor... :002:

    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: 28 de Janeiro de 2008
  11. Armadillo

    Armadillo Folding Member

    Acredita que esta muito melhor, ja temos classes desde 1996/7, e da para fazer umas coisas engraçadas com OO.

    IE7, claro! O IE6 ja morreu e foi para o inferno:004:

    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: 28 de Janeiro de 2008
  12. RicardoMoreira

    RicardoMoreira Power Member

    Só uma sugestão, porque em vez de ASP não passas para ASP.NET, que é bem mais simples utilizar ajax?
     
  13. Armadillo

    Armadillo Folding Member

    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... ... ...)
     
  14. RicardoMoreira

    RicardoMoreira Power Member

    Ah, pensava ser um projecto novo até para motivos de aprendizagem, daí a sugestão. :)
     
  15. nothing

    nothing Power Member

    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).
     
  16. Armadillo

    Armadillo Folding Member

    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

    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)




    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: 29 de Janeiro de 2008
  17. slack_guy

    slack_guy Power Member

    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.
     
  18. nothing

    nothing Power Member

    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.
     
  19. Armadillo

    Armadillo Folding Member

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

Partilhar esta Página