Jump to content


Photo

Addevent


  • Faça o login para participar
6 replies to this topic

#1 bdoweb

bdoweb

    Super Veterano

  • Usuários
  • 1641 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 26/10/2005, 07:09

Olá pessoal,

estou tentando montar um AJAX em meu site!!!! Se um tutorial escrito pelo elcio!!!!! no site da tableless!!!
bom o código funciona normal se eu acoplar o onChange nome HTML.... Mas como o q HTML é HTML, o q é CSS é CSS, e o q é JS é JS tudo separado!!!! Entaum estou tentando fazer um addEvent das minhas chamadas mas naum funciona... ele naum chama!!!!!
O código está logo abaixo para vc's poderem me ajudar:
/********** OBJETO XMLHTTP **************/
try{
    xmlhttp = new XMLHttpRequest();
}catch(ee){
    try{
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    }catch(e){
        try{
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        }catch(E){
            xmlhttp = false;
        }
    }
}
function addEvent(obj, evType, fn){
	if (obj.addEventListener)
  obj.addEventListener(evType, fn, true);
	if (obj.attachEvent)
  obj.attachEvent("on"+evType, fn);
}
/********** PEGA DADOS DO CEP *********/
function pesquisa_cep(){
    var valor = document.getElementById('cep').value;
	//Exibe o texto carregando no div conteúdo
    var aguarde = document.getElementById("aguarde");
    aguarde.innerHTML = '<div id=\"exibe_aguarde\"><img src=\"./img/ampulheta.gif\" /> Aguarde ... </div>';
	//Abre a url
    xmlhttp.open("GET","pesquisa_cep.php?cep=" + valor,true);
    //Executada quando o navegador obtiver o código
    xmlhttp.onreadystatechange = function() {
        if (xmlhttp.readyState == 4){
            //Lê o texto
            var resultados = xmlhttp.responseText;
 	 var resultados = resultados.split("|");
 	 //COLOCA O ENDEREÇO!!!!!!
            var conteudo = document.getElementById("endereco");
            conteudo.value = resultados[0];
 	 //COLOCA BAIRRO
 	 var conteudo = document.getElementById("bairro");
 	 conteudo.value = resultados[1];
 	 //COLOCA CIDADE
 	 var conteudo = document.getElementById("cidade");
 	 conteudo.value = resultados[2];
        }
    }
	aguarde.innerHTML = '';
    xmlhttp.send(null)
}
/*********** ADICIONA EVENTO PARA CHAMAR FUNÇÂO ************/
var valor_cep = document.getElementById('cep');
addEvent(valor_cep,'change',pesquisa_cep);

Tipo ele naum tem reação nenhuma!!!!

Valew[]'s
Quer ajuda seus amigo e ainda ganhar uma graninha?
Acesse agora mesmo http://yeapiz.com

#2 Alex Hiroshi

Alex Hiroshi

    Super Veterano

  • Ex-Admins
  • 4923 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 26/10/2005, 09:35

var valor_cep = document.getElementById('cep');
addEvent(valor_cep,'change',pesquisa_cep);
Nesse caso, vc chama o evento logo ao entrar na página, certo? Quando vc entrar na página, uma das primeiras coisas que ele vai fazer é chamar a função, antes mesmo do objeto ser criado..
Então quando ele chama a função, o seu select ainda não foi criado

Acho que já deu para entender o pq não funciona.. :)
Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Ex-Administrador

#3 bdoweb

bdoweb

    Super Veterano

  • Usuários
  • 1641 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 26/10/2005, 10:07

Tipo até entendi.....
Mas o change q coloquei lá é para evitar issu naum é?????????

Ele teria de fazer aquilo somente quando eu mudase o valor do meu campo naum é!!!!!!
Quer ajuda seus amigo e ainda ganhar uma graninha?
Acesse agora mesmo http://yeapiz.com

#4 Alex Hiroshi

Alex Hiroshi

    Super Veterano

  • Ex-Admins
  • 4923 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 26/10/2005, 10:57

O "change" que vc usou, é para falar que vc quer chamar tal função quando um "change" for feito no select. . Mas para funcionar, vc precisa primeiro chamar a função que adiciona esse evento....
Fórum WMO - Equipe de Desenvolvimento / Banco de Dados - Ex-Administrador

#5 bdoweb

bdoweb

    Super Veterano

  • Usuários
  • 1641 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 26/10/2005, 11:53

bom se eu entendi bem.....

Se eu inicia-se meu form com um valor padrão ele deveria funcionar naum é!!!!!

<input type="text" name="cep" value="04671071" />

Mas continua com o mesmo erro!!!!!
Quer ajuda seus amigo e ainda ganhar uma graninha?
Acesse agora mesmo http://yeapiz.com

#6 Guilherme Blanco

Guilherme Blanco

    Loading...

  • Conselheiros
  • 891 posts
  • Sexo:Masculino
  • Localidade:São Carlos - SP/Brasil
  • Interesses:Programação Web e minha namorada (Maria Camila).

Posted 26/10/2005, 16:03

O problema parte da implementação de eventos no IE. O modelo de eventos do Explorer perde a referência ao objeto e passa a referenciar então ao objeto window. É por isto que seu script está errado.

Recomendo que utilize alguma classe de RPC já existente atualmente. Obviamente, aconselho a minha, eleita segunda melhor classe inovadora no mês de Agosto no site PHPClasses.org.

http://www.phpclasse...ckage/2520.html

Ele possui maior suporte que seu script, mas ainda é falha no Opera 8. Estou despendendo grandes esforços para regularizá-la neste browser, bem como no KHTML.

Caso possua dúvidas quanto à sua utilização, existe uma extensa documentação disponível juntamente com a classe. Se ainda assim tiver dúvida, o site PHPClasses.org e o WebFórum estão aqui para isto!

Se postar no PHPClasses, tudo o que tem a fazer é aguardar de um a dois dias para ter sua pergunta respondida. Se postar aqui, publique no Fórum e depois envie-me um PM notificando do tópico.

Provavelmente, a solução à sua dúvida usando a pAjax se assemelha à descrita abaixo. Este código pode conter erros, pois estou escrevendo e não testei:

function CEPRetriever() { 
    pAjax.call(this);
}


var _p = CEPRetriever.prototype = new pAjax;


// Efetua a chamada via XmlHttpRequest
_p.search = function () {
    var cep = document.getElementById("cep").value;

    var req = this.prepare("pesquisa_cep", pAjaxRequest.GET);
    req.setURI("pesquisarCep.php");
    req.setParam("cep", cep);
    req.async();
}


// Adicionando funcionlidade de aviso de Loading...
_p.onCreate = function () {
    document.getElementById("aguarde").innerHTML = "Loading...";
}


// Exibindo resultados
_p.onLoad = function () {
    var response = this.getResponse();

    document.getElementById("endereco").value = response.endereco; 
    document.getElementById("bairro").value = response.bairro;
    document.getElementById("cidade").value = response.cidade;

    document.getElementById("aguarde").innerHTML = "";
}


Não se esqueça de adicionar o suporte à JS via a chamada:

<?php pAjax::showJavaScript("path/to/js/files"); ?>


Sua página de busca: pesquisarCep.php, deve ser algo do tipo:

<?php

require_once ".../class.pAjax.php";

function pesquisa_cep($cep) {
    // Efetua busca na base, etc.    

    // ...

    return array(
      "endereco" => $endereco,
      "bairro" => $bairro,
      "cidade" => $cidade
    );
}


$AJAX = new pAjax();
$AJAX->disableDomainProtection();
$AJAX->enableExportProtection();

$AJAX->export("pesquisa_cep");

$AJAX->handleRequest("UTF-8");

?>


Caso alguma coisa, entre em contato...


####################################################
P.S.: Quase esqueci...
Sua ação no botão para buscar deve ser algo assim:

<input type="button" value="Buscar" onclick="(new CEPRetriever()).search();" />

[]s,
<script language="WebFórum">
// Dados:
Nome("Guilherme Blanco");
Localidade("São Carlos - SP/Brasil");
Cargo("Manutenção");
</script>

#7 bdoweb

bdoweb

    Super Veterano

  • Usuários
  • 1641 posts
  • Sexo:Masculino
  • Localidade:São Paulo - SP

Posted 28/10/2005, 15:23

Guilherme Blanco cara sua classe é realmente muito boa ....

Mas naum funcionar no Opera me zoa um pouco... pois tenho um cliente q só utiliza o opera e as outras o firefox e o IE!!!!!! ahhh e ainda tenho um no safari!!!

O que eu naum entendo é que o seguinte codigo isolado funciona!!!
<input type="button" value="Click" id="b">

	<script>
	function foi(){
  alert(123)
	}

	function addEvent(obj, evType, fn){
  if (obj.addEventListener)
 	 obj.addEventListener(evType, fn, true)
  if (obj.attachEvent)
 	 obj.attachEvent("on"+evType, fn)
	}

	bot=document.getElementById("b")

	addEvent(bot,"click",foi)
	</script>
Mas quando eu o junto ao meu código descrito acima ele dá erro!!!!


como posso resolver meu problema!!!
Quer ajuda seus amigo e ainda ganhar uma graninha?
Acesse agora mesmo http://yeapiz.com




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq