Académique Documents
Professionnel Documents
Culture Documents
iM a s t e r s Ho m e D el i c io u s Gr u p o s d e u s u á r io s F. A . Q . R eg r a s Bu s c a Membros
Logado como: Waldemiro ( Sair ) Painel de Controle Ver Novos Posts Meu Assistente 0 Novas Mensagens
CODE
Valeu
--------------------
Márcia O. Carmo
- Designer de interfaces -
http://www.mah.com.br/
............................................
. "As boas interfaces nos fazem respirar fundo e,
. quando estamos longe, nos fazem sentir saudades..."
............................................
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 2 de 31
--------------------
~/ A procura do programa perfeito ! /~
hei wilker, não consegui entender a parte de tratamento de acentos no uso do método
POST... poderia explicar o q acontece na função q vc desenvolveu pra isso e como vc faz
para "desencriptar" dpois?
Grupo: Membros
Posts: 31
Registrado: 29 Jul 2005
Membro nº: 21.921
aÊ kra muito bom seu tutorial, pra quem achava que AJAX era só akele cara verde da
liga da justiça vc esclareceu bastante algumas duvidas.
Gostaria de saber se vc tem algum exemplo do tipo:
um combo: Seleciona o estado e disponibiliza as cidades, algo do tipo categoria de
subcategoria.
Grupo: Membros
Posts: 1
Registrado: 27 Oct 2005 Falow !
Membro nº: 25.069
Prarabéns !
hei wilker, não consegui entender a parte de tratamento de acentos no uso do método
POST... poderia explicar o q acontece na função q vc desenvolveu pra isso e como vc
faz para "desencriptar" dpois?
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 3 de 31
Grupo: Membros
Posts: 517
faz tempo q eu n apareco por aki
Registrado: 25 Aug 2004
De: Recife - PE
Membro nº: 12.479 hehehe
bem, nesse kso eh o seguinte kra, existe um padrao da propria W3 q permite "codificar"
a URL (URL Encoded)
index.php?nome=Wilker
bem, pra converter oq eu fiz foi pegar o codigo decimal do caractere (com o javascript) e
usei minha funcao pra converter em hexadecimal
--------------------
Wilker Web Chat versao 2.0 esta por vir
Bem, vou deixar um link aki de uma lib de Ajax... eu gostei muito... facilita muito o uso
do ajax em seu programa.
http://www.phpavancado.net/node/41
http://www.phpavancado.net/node/76
--------------------
Pedro Faria de Miranda Pinto
Grupo: Membros http://www.mutantepower.com.br
Posts: 568 http://www.phpavancado.net *NOVO*
Registrado: 24 Feb 2003
De: Rio de Janeiro Leia as documentações:
Membro nº: 188 http://br.php.net/
http://www.mysql.com/
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 4 de 31
vo publica aki uma simples API q eu fiz em Javascript para facilitar o uso do Ajax
(demonstrarei um exemplo de uso depois)
essa eh a parte inicial de uma API q eu to fazendo de Ajax, o resto da API eu vo cria em
classe no PHP, ai vai minha API Javascript:
ajax.js
Grupo: Membros CODE
Posts: 517
Registrado: 25 Aug 2004
De: Recife - PE
function Ajax() {
Membro nº: 12.479 Ajax.dec2hex = function(dec) {
var hex_chars = "0123456789ABCDEF";
return n1 + n2;
}
Ajax.init = function() {
var req;
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch(ex) {
try {
req = new XMLHttpRequest();
} catch(exc) {
req = null;
}
}
}
return req;
}
Ajax.test = function() {
if(Ajax.init())
return true;
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 5 de 31
else
return false;
}
if(ajax) {
var sendCont = Ajax.open.arguments[2] ? Ajax.open.arguments
[2] : null;
if(sendCont) {
ajax.open("POST", pag, true);
ajax.setRequestHeader("Content-Type", "application/x-www-
form-urlencoded");
} else {
ajax.open("GET", pag, true);
}
ajax.onreadystatechange = function() {
if(ajax.readyState == 4) {
if(ajax.status == 200) {
var resp = ajax.responseText;
if(!resp) {
return false;
}
var st = resp.charAt(0);
var txt = resp.substring(2);
if(st == '+') {
if(cb)
eval(cb + '("' + txt + '")');
} else if(st == '-') {
alert('Erro: ' + txt);
return false;
} else {
alert('Erro fatal: ' + resp);
return false;
}
} else {
alert('Erro ' + ajax.status + ': ' +
ajax.statusText);
return false;
}
}
}
ajax.send(sendCont);
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 6 de 31
}
}
if(!acao) {
alert("Erro: o valor action do formulario não foi definido");
return false;
}
if(!metodo) {
alert("Erro: o método do formulário não foi definido");
return false;
} else
metodo = metodo.toLowerCase();
send = send.join("&");
if(metodo == "post")
Ajax.open(acao, cb, send);
else
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 7 de 31
return false;
}
if(clear)
while(obj.length > 0)
obj[0] = null;
new Ajax();
oq essa API faz eh criar uma classe Javascript, chamada Ajax, apenas com metodos
estaticos (podem ser usados sem instanciar uma classe, isso eh um conceito de
Programacao Orientada a Objetos)
Ajax.dec2hex(dec)
Essa funcao foi feita apenas para uso interno da classe, ela converte decimais (entre 0 e
255) em hexadecimal de 2 digitos (ex: A9)
Ajax.init()
essa funcao eh para inicializar o Ajax de forma cross-browser(de acordo com o browser
usado), ela pode ser usada como a funcao ajaxInit() q eu criei qdo inicei esse topico aki
no forum
Ajax.test()
funcao bem simples para verificar se o browser tem suporte a Ajax
Ajax.open(pag, cb)
essa eh a funcao que sera + usada por quem usar essa API, ela abre uma conexao Ajax
com o argumento pag, e depois envia a resposta para a funcao de callback (cb), no
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 8 de 31
Ajax.send(f, cb)
essa funcao é usada para enviar formularios HTML por Ajax, facilitando o envio para uso
de cadastro ou outros formularios
bom, esses sao os metodos da minha classe, agora vamos usala num exemplo simples:
consulta.php
CODE
<?
$a = $_GET['a'];
?>
testeAjax.php
CODE
<html>
<head>
<title> teste ajax </title>
<script src="ajax.js"></script>
<script>
function get(e) {
return document.getElementById(e);
}
function somaCB(v) {
alert(v);
}
</script>
</head>
<body>
<input type="text" id="valor1"> <button type="button" onclick="Ajax.open
('consulta.php?a=' + get('valor1').value, 'somaCB');">Somar com
5</button>
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 9 de 31
</body>
</html>
pronto, eh isso ai, como visto a API esconde akela complexidade do Ajax
vcs devem ter reparado algo estranho: "por que akele +: na string do echo no PHP?"
ou seja, ele entende que tudo ocorreu como deveria. isso serve, por exemplo, vamos
mudar o arquivo consulta.php
consulta.php
CODE
<?
$a = $_GET['a'];
if(is_numeric($a))
echo "+:" . ($a + 5);
else
echo "-:O argumento nao eh numerico";
?>
bem, agora se a pessoa passar um argumento nao numerico, ele escreve -: oq significa
"erro esperado", e entao ele da um alert() no javascript com o erro
caso ele n encontre nem o +: nem o -: no inicio do retorno, ele vai considerar um "Erro
Fatal" e vai alertar o erro como um erro fatal
o argumento "a" foi passado por GET, ou seja, diretamente no nome do arquivo
("consulta.php?a=" + get('valor1').value)
a funcao get(e) que eu criei eh bem simples, eh soh pra diminiu o codigo na hora de
pegar um elemento via ID
se voce quizesse passar por POST o argumento "a", a diferenca seria pequena, ficaria
assim:
pronto, o 3 argumento implicito seria o envio POST, vc pode usar os 2 ao mesmo tempo,
um exemplo simples abaixo para enviar GET e POST com varios argumentos em cada:
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 10 de 31
Ajax.open("pagina.php?a=nome&b=cidade", "returno",
"c=nomeEmPost&d=cidadeEmPost");
pronto, chegaria do outro lado "a" e "b" por GET, e "c" e "d" por POST
vo t q da uma saida agora, + tarde eu volto pra posta exemplos com o Ajax.send() e
com o Ajax.fastSelect()
t+
--------------------
Wilker Web Chat versao 2.0 esta por vir
Post #28
MalcomX Nov 22 2005, 07:02 PM
Pois logo após o inicio do curso tem um colega que postou um código sobre um select no
banco, e se encontrasse o mesmo registro no BD ele mostraria a msg, mais não obtive
sucesso pode me ajudar...????
A unica coisa que acontece é que fica dando Not Found ...
Grupo: Membros
Posts: 10
Registrado: 26 Jan 2005
Onde posso ter errado...
De: Curitiba/Paraná
Membro nº: 15.929
CODE
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-
1" />
<title>Cadastro, consulta Ajax</title>
<script type="text/javascript" src="ajaxInit.js"></script>
<script type="text/javascript">
function verifica() {
var emailV = document.getElementById("con_email").value;
var ajax = ajaxInit();
ajax.open("GET", "consulta_db.php?con_email=" + emailV, true);
ajax.onreadystatechange = function() {
if(ajax.readyState == 4) {
if(ajax.status == 200) {
var retornoValor = ajax.responseText; //aqui vai ser o valor
0 ou 1, dependendo dele ter encontrado ou n
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 11 de 31
if(retornoValor == "1") {
document.getElementById("msg").style.display="block";
}
} else {
alert("erro: " + ajax.statusText);
}
}
}
ajax.send(null); //essa foi a linha adicionada
}
</script>
<style type="text/css">
#msg {display: none}
</style>
</head>
<body>
<h2>Cadastre-se</h2>
</body>
</html>
Desde já agradeço....
Valeu
Wilker
Eu preciso fazer 2 combobox (select) em um deles irá carregar as marcas dos veículos e
ao
Grupo: Membros selecionar a marca "X" por exemplo, no combobox dos modelos irá carregar os veículos
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 12 de 31
Se no meu arquivo PHP eu fosse usar loop com while ou for como eu imprimiria esses
dados atras do ajax?
--------------------
Eron Venter
Site: http://www.shop4rodas.com.br || Em Breve
Wilker
Grupo: Membros
Posts: 517
Eu preciso fazer 2 combobox (select) em um deles irá carregar as marcas dos veículos
Registrado: 25 Aug 2004 e ao
De: Recife - PE selecionar a marca "X" por exemplo, no combobox dos modelos irá carregar os
Membro nº: 12.479
veículos da marca selecionada
Eu queria fazer isso para que a pagina nao fosse carregada sempre que selecionada
uma marca, e em javascript ele imprimi um codigo enorme na pagina....
Se no meu arquivo PHP eu fosse usar loop com while ou for como eu imprimiria esses
dados atras do ajax?
olha soh kra, n tem como vc passar um Array entre PHP e Javascript... pelo menos por
enquanto n existe essa compatibilidade, entao oq vc tem q fazer eh uma simulacao de
passagem de Array, vc faz assim:
1 - cria um Array no PHP e coloca todos os seus dados q serao passados separadamente
2 - na hora de imprimir na tela (pra chegar no JavaScript) vc da um implode usando um
separado q vc tenha certeza q n esta no conteudo (geralmente usa-se "|")
3 - no Javascript vc vai ler os dados separados por "|" (c vc usou isso)
4 - no Javascript vc faz:
meuArray = retorno.split("|");
logica:
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 13 de 31
1 - criar um array
2 - concatenar com um separador (gerando uma string)
3 - pegar a string
4 - separar para voltar a ser um array
--------------------
Wilker Web Chat versao 2.0 esta por vir
QUOTE
<?php
$con = mysql_connect("localhost", "root", "");
Grupo: Membros
Posts: 268 mysql_select_db("db_linhas");
Registrado: 26 Feb 2003
Membro nº: 609
if ($tipo == "consulta"){
$categoria = addslashes($_GET["id"]);
$consulta = mysql_query("SELECT * FROM subcategoria WHERE categoria =
'$categoria'");
$i=0;
while($row = mysql_fetch_assoc($consulta)){
echo $row["nome"] . "|" . $row["codigo"] . ",";
$i++;
}
}
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script language="javascript">
function pesquisar_dados( valor ){
http.open("GET", "combo2.php?tipo=consulta&id=" + valor, true);
http.onreadystatechange = handleHttpResponse;
http.send(null);
}
function handleHttpResponse(){
campo_select = document.forms[0].subcategoria;
if (http.readyState == 4) {
campo_select.options.length = 0;
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 14 de 31
results = http.responseText.split(",");
for(i=0; i < results.length; i++){
string = results[i].split("|");
campo_select.options[i] = new Option( string[0], string[1] );
}
}
}
function getHTTPObject() {
var req;
try {
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
if (req.readyState == null) {
req.readyState = 1;
req.addEventListener("load", function () {
req.readyState = 4;
if (typeof req.onReadyStateChange == "function")
req.onReadyStateChange();
}, false);
}
return req;
}
if (window.ActiveXObject) {
var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
for (var i = 0; i < prefixes.length; i++) {
try {
req = new ActiveXObject(prefixes[i] + ".XmlHttp");
return req;
} catch (ex) {};
}
}
} catch (ex) {}
alert("XmlHttp Objects not supported by client browser");
}
</script>
</head>
<body>
<form name="formulario" method="post" action="">
<p><select name="categoria" onChange="pesquisar_dados( this.value )">
<option></option>
<?php
$consulta = mysql_query("SELECT * FROM categorias ORDER BY nome ASC");
while( $row = mysql_fetch_assoc($consulta) )
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 15 de 31
{
echo "<option value=\"{$row['codigo']}\">{$row['nome']}</option>\n";
}
?>
</select></p>
<p><select name="subcategoria"></select>
</p>
</form>
</body>
</html>
--------------------
Eron Venter
Site: http://www.shop4rodas.com.br || Em Breve
Post #32
Thiago Viana Jan 2 2006, 05:02 PM
Olá a todos,
Mas ainda tenho um problema por aqui, será que alguem me ajuda?
Grupo: Membros
Posts: 6
Registrado: 2 Jan 2006 Tenho a funcao ajaxInit identica a que foi postada:
Membro nº: 27.461
QUOTE
function ajaxInit() {
var req;
try {
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
try {
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch(ex) {
try {
req = new XMLHttpRequest();
} catch(exc) {
alert("Esse browser não tem recursos para uso do Ajax");
req = null;
}
}
}
return req;
}
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 16 de 31
QUOTE
function loadAjax(sql) {
var valores;
var retorno;
ajax = ajaxInit();
if(ajax) {
ajax.open("GET", "ajax.asp?" + sql, true);
ajax.onreadystatechange = function() {
if(ajax.readyState == 4) {
if(ajax.status == 200) {
valores = ajax.responseText;
retorno = valores.split(";");
return retorno;
} else {
alert(ajax.statusText);
}
}
}
ajax.send(null);
}
}
E tenho tb uma funcao que vai ficar chamando o loadAjax passando os parametros que
eu quiser e retornando pra miha aplicacao montagens de selects dependetes de outros,
validacoes e etc:
QUOTE
function mostra() {
teste = loadAjax("sql=filial");
alert(teste);
}
Mas nao estou conseguindo fazer com que a funcao loadAjax retorne os valores que
foram pegos pelo ajax.responsetext. Alguem poderia me dar uma luz de como fazer
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 17 de 31
isso?
Abraco a todos!
oq vc tem q fazer eh uma funcao de callback... e manda o script rodar ela depois q
concluir a requisicao
isso pq ele fica chamando o evento varias vezes (4 pra falar a verdade) e n da pra fazer
retorno nesse tipo de coisa
Grupo: Membros
Posts: 517 com gambiarras daria... mas ia ja eh outro assunto... e o script eh bem maior
Registrado: 25 Aug 2004
De: Recife - PE
Membro nº: 12.479 --------------------
Wilker Web Chat versao 2.0 esta por vir
Blz Wilker,
Grupo: Membros
Posts: 6
Registrado: 2 Jan 2006
Membro nº: 27.461
Grupo: Moderadores
Posts: 758 Muito obrigado Wilker, estamos ae!
Registrado: 15 May 2005 []'s
De: Rio de Janeiro
Membro nº: 19.002
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 18 de 31
--------------------
"A ninguém devais coisa alguma, senão o amor recíproco;
pois quem ama ao próximo tem cumprido a lei." (Romanos 13:8)
dei uma reformulada de leve na minha API (ta bom, n foi tao leve assim...) e vo reposta
ela aki, e vo da um exemplo de uso (fiquei devendo isso da ultima vez):
CODE
/*
***************************************
Grupo: Membros * Wilker Ajax API *
Posts: 517
* *
Registrado: 25 Aug 2004
De: Recife - PE
* Criador: Wilker Lúcio da Silva *
Membro nº: 12.479 * Ultima Modificação: 03/02/2006 *
* Descrição: API para simplificar *
* o uso de Ajax *
***************************************
*/
var Ajax = {
//metodo de inicializacao do Ajax
init: function() {
var req;
try {
//tenta carregar o Ajax no Internet Explorer
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
try {
//segunda tentativa para o Internet Explorer
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch(ex) {
try {
//tenta carregar o Ajax no Mozilla / Netscape
req = new XMLHttpRequest();
} catch(exc) {
req = null;
}
}
}
return req;
},
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 19 de 31
if(ajax) {
var openArgs = arguments[1];
if(typeof cb != 'function')
cb = null;
} else {
var cb = openArgs;
var sendCont = arguments[2] ? arguments[2] : null;
var cbArgs = arguments[3] ? arguments[3] : null;
var errorHandle = typeof arguments[4] == 'function' ?
arguments[4] : Ajax.defaultError;
}
if(sendCont) {
ajax.open("POST", pag, true);
ajax.setRequestHeader("Content-Type", "application/x-www-
form-urlencoded");
} else {
ajax.open("GET", pag, true);
}
ajax.onreadystatechange = function() {
if(ajax.readyState == 4) {
if(ajax.status == 200) {
var resp = ajax.responseText;
if(!resp) {
if(typeof cb == 'function')
cb(null, cbArgs);
return false;
}
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 20 de 31
var st = resp.charAt(0);
var txt = resp.substring(2);
if(st == '+') {
if(typeof cb == 'function')
cb(txt, cbArgs);
} else if(st == '-') {
errorHandle(txt, false, cbArgs);
return false;
} else {
errorHandle(resp, true, cbArgs);
return false;
}
} else {
errorHandle(ajax.statusText, true, cbArgs);
return false;
}
}
}
ajax.send(sendCont);
}
},
if(!acao) {
alert("Erro: o valor action do formulario não foi definido");
return false;
}
if(!metodo) {
alert("Erro: o método do formulário não foi definido");
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 21 de 31
return false;
} else
metodo = metodo.toLowerCase();
send = send.join("&");
if(metodo == "post")
Ajax.open(acao, {callback: cb, post: send, args: cbArgs,
error: errorHandle});
else
Ajax.open(acao + "?" + send, {callback: cb, args: cbArgs,
error: errorHandle});
return false;
},
bom, quem olhar pra 1 versao, viu q a API mudou na hora de criacao, mas n foi soh
isso, no funcionamento / uso tb mudou (caracteristicas de beta neh galera =P)
ela tinha o modo antigo de passar o Ajax.open() q recebia ateh 5 argumentos diferentes,
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 22 de 31
esse metodo ainda funciona dessa maneira (n tirei pra n prejudicar outras coisas q eu ja
fiz, mas futuramente isso sera removido da API)
modelo antigo:
eram passados ateh 5 argumentos diferentes, e deveriam ser passados na ordem exata,
ou seja, c vc quizesse apenas passar a pagina para abrir e a funcao em caso de erros vc
deveria fazer:
e agora alguns diriam "mas o codigo usado foi maior!! qual a vantagem?"
viram? agora eu n precisei repassar todos os argumentos, agora soh eh preciso passar
os argumentos que forem usados, e em qq ordem, isso deixa o codigo mais legivel, mais
facil de lembrar, e + pratico na maioria das vezes (que voce nao usa todos os
argumentos)
agora eu vou dar um exemplo de uso, vo fazer algo que é muito pedido, o tal do
"selecione um combobox, e altere o proximo", usando um exemplo de softwares,
primeiro seleciona a categoria, e aparecem softwares no combo de baixo
primeiro criem um arquivo chamado ajax.js com o conteudo do code que eu escrevi logo
no inicio
consulta.php
CODE
<?
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 23 de 31
$softwares["editores"] = $c;
$softwares["jogos"] = $c;
$cat = $_GET["categoria"];
//caso exista vamos fazer ela se tornar uma string, usando um separador
para separar os valores, e depois escrever na tela
echo utf8_encode("+:" . implode("|", $softwares[$cat]));
?>
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 24 de 31
ok ok, vamos la
voces devem ter percebido que na hora de anunciar o erro, eu coloquei um prefixo na
string de saida (no kso, foi o "-:"), isso diz para minha API de Ajax que ocorreu algum
"erro esperado"
obs: caso o texto retornado seja vazio(nenhum caractere de saida) entao o resultado
será considerado POSITIVO, mas, se ouver qq coisa escrita, e n tiver nem o "+:" nem o
"-:" antes, entao será considerado um "erro inesperado" ou "erro fatal" q no kso seria
um erro PHP seu (parser error, erros normais, nao esperados)
o utf8_encode() presente nas respostas (tanto de erro qto de sucesso) serve para
corrigir um bug, q ocorre ao passar caracteres acentuados, se voce passar caracteres
acentuados sem usar essa funcao, eles vao chegar errado para o Javascript depois
pagina.html
CODE
<html
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-
1" />
<title>:: Select Carregador ::</title>
<script type="text/javascript" src="ajax.js"></script>
<script type="text/javascript">
function buscar(categoria) {
resetCombo(document.getElementById("elementos")); //zerar o select
que será substituido (caso tenha algo)
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 25 de 31
function buscarCB(v) {
var e = document.getElementById("elementos"); //pegar combo que sera
trocado
function buscarError(v) {
alert("Erro: " + v);
</script>
</head>
<body>
<select onchange="buscar(this.value);">
<option value="">Selecione</option>
<option value="design">Design</option>
<option value="editores">Editores PHP</option>
<option value="jogos">Jogos</option>
<option value="cdssdc">Pra testar erro</option>
</select>
<br><br>
<select id="elementos" disabled="disabled"></select>
</body>
</html>
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 26 de 31
buscar(categoria)
no kso, nos avisamos para a API, que em caso de sucesso, deve ser executada a funcao
"buscaCB" (q foi definida logo abaixo), e em caso de erro deve ser executada a funcao
"buscaError" (q tb foi definida abaixo)
caso a funcao de sucesso nao seja definida, ele n vai fazer nada apos a requisicao (isso é
feito em casos que se quer apenas enviar dados para o servidor, sem receber)
caso a funcao de falha nao seja definida, a API tem uma "funcao padrao" para isso, que
da um alerta com o erro
na funcao de callback, deve-se definir 1 argumento, que vai receber a string de retorno
ai vc que sabe como vai tratar isso, afinal, o programador decide neh =P
bom galera, espero que tenham gostado, e repetindo: "postem em caso de duvidas"
--------------------
Wilker Web Chat versao 2.0 esta por vir
http://forum.imasters.com.br/index.php?showforum=143
Be Happy, don't worry! xD
--------------------
Grupo: Moderadores
Lutando por uma internet sem idiotas.
Posts: 1.046
Registrado: 23 Feb 2005
De: Belo Horizonte
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 27 de 31
obs Fleury, n pode usar urlencode() assim no PHP n, pq ele converte todos os espacos
em + e troca alguns caracteres tb
flw
Grupo: Membros
Posts: 517
--------------------
Registrado: 25 Aug 2004
Wilker Web Chat versao 2.0 esta por vir
De: Recife - PE
Membro nº: 12.479
Informativo sobre WWC 2.0: http://200.199.74.253/site/pessoal/wilker/wwcinfo.php
Pessoal,
Dei uma lida e estou com um problema que nao consigo resolver, se vocês purem me
ajudar.
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 28 de 31
}
}
}
}
function resetCombo(combo) {
while(combo.length > 0) {
combo.options[0] = null;
}
}
function doReloadCidade(_value){
ajax.onreadystatechange = function() {
if (ajax.readyState == 1) {
//limpa o select
var c = document.getElementById("idCidade")
resetCombo©;
c.options[0]=new Option("Aguarde","Aguarde")
}else if(ajax.readyState == 4) {
//limpa o select
var c = document.getElementById("idCidade")
resetCombo©;
aCidades[i]=escape(aCidades[i])
c.options[c.options.length]=new Option(aCidades[i],
aCidades[i])
}
}
}
ajax.send(null);
}
</script>
</head>
<body>
Estado:
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 29 de 31
Tenho outra que é retornaCidade.php que contém uma consulta que me retorna ['São
Sepe', 'Porto Alegre', 'Santo Ângelo', '' ]´
O grande problema são os acentos que não funcionam dentro do combo, só funciona se
colocar as palavras em ASCII Hex...
Tem solução, para não ter que colocar as palarvas em ASCII HEx no banco?
Att
Diego
É o seguite:
To fazendo um site de imobiliaria com um sistema de busca de imoveis da seguinte
forma:
Grupo: Membros
Posts: 315
Registrado: 25 Sep 2004 Tenho um formulario com 5 campos:
Membro nº: 13.173
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 30 de 31
Depois desta variavel, sera feito uma busca no banco MySql para preencher o primeiro
option com os tipos de imoveis que teem disponiveis na tabela compra ou na tabela
alugue conforme a escolha da pessoa.
Ao selecionar o país, sera feito uma busca no banco MySql para preencher o segundo
option com os estados dispoiveis para aquele pais que contem casa para alugar ou
vender conforme a escolha da pessoa.
Ao selecionar o estado, sera feito uma busca no banco MySql para preencher o terceiro
option com as cidades dispoiveis para aquele estado que contem casa para alugar ou
vender conforme a escolha da pessoa.
Ao selecionar cidade, sera feito uma busca no banco MySql para preencher o quarto
option com os bairros dispoiveis para aquela cidade que contem casa para alugar ou
vender conforme a escolha da pessoa.
Ao selecionar o bairro, sera feito uma busca no banco MySql para preencher o quinto
option com as faixas de valores disponiveis para aqueles disponiveis para alugar ou
vender conforme a escolha da pessoa.
Obrigado pessoa!
Carlos Rocha
Digite palavras-chave Buscar no tópico « Próximo mais velho Cursos Próximo mais novo »
1 membros: Waldemiro
|---- Cursos Ok
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006
Ajax - iMasters Fóruns Página 31 de 31
http://forum.imasters.com.br/index.php?showtopic=132737&st=20 29/5/2006