março
3
2006

Algumas pessoas me mandaram e-mails pedindo como fazer para retornar múltiplos valores em uma requisição AJAX.

Eu havia resolvido de uma maneira não muito elegante. O PHP gerava uma string separada por vírgulas e no Javascript eu fazia o split da string para separar os campos e os valores. Pesquisando na Internet eu encontrei nesse site uma maneira um pouco mais elegante. Fiz um exemplo para testar e ficou realmente bem mais fácil de trabalhar.

Código da página HTML

Código

Código do script PHP

Código

3 Comments

Ué.. JSON serve exatamente para isso! http://www.json.org :)

Daniel Gianni 14/03/06 @ 10:15 pm

que tal retornar um vetor em Javascript e depois dar um eval(vetor) para transformar ele efetivamente em um array javascript com objetos

$sql = ”

SELECT codigo, cor, tipo, preco
FROM cartuchos
WHERE impressora = ‘”.$modelo.”‘ and fabricante = ‘”.$fabricante.”‘
order by codigo,tipo,cor

“;

$resultado = $db->get_results($sql);

$retorno = “var vCartuchos = new Array();\n\n”;

if ( $resultado ) {

for ( $i = 0 ; $i codigo).”‘;\n”;
$retorno .= “vCartuchos[".$i."].cor = ‘”.utf8_encode($resultado[$i]->cor).”‘;\n”;
$retorno .= “vCartuchos[".$i."].tipo = ‘”.utf8_encode($resultado[$i]->tipo).”‘;\n”;
$retorno .= “vCartuchos[".$i."].preco = ‘”.utf8_encode($resultado[$i]->preco).”‘;\n”;

}

echo $retorno;

} else {

echo “vazio”;

}

break;

}

No Javascript

var temp3 = originalRequest.responseText;

if ( temp3.indexOf(”vCartuchos”) > 0 ) {

var tabela = $(”imptable”);
eval(temp3);

var tabela_cabecalho = ‘Cartuchos desta impressora’;
tabela_cabecalho += ‘CódigoCor’;
tabela_cabecalho += ‘TipoPreço R$’;
tabela_cabecalho += ”;
var tabela_rodape = ”;
var tabela_linha = ”;

for (i = 0; i ‘+vCartuchos[i].codigo+”;
tabela_linha += ”+vCartuchos[i].cor+”;
tabela_linha += ”+vCartuchos[i].tipo+”;
tabela_linha += ”+vCartuchos[i].preco+”;

}

tabela.innerHTML = tabela_cabecalho+tabela_linha+tabela_rodape;
tabela.style.display = ‘block’;

esperar = $(’aguarde’);
esperar.style.display = ‘none’;

}

[...] Graças ao comentário do Robson Junior no meu post anterior sobre retornar multiplos valores com AJAX eu descobri o JSON. E novamente percebi que estava tentando reinventar a roda. Segundo o site, JSON é “um formato leve para troca de informações. É facil para humanos lerem e escreverem. E é fácil para as máquinas processar e gerar.” Uma espécie de XML ligth. É baseado na notação de objetos do JavaScript, o que cai como uma luva para usar com o XMLHttpRequest. [...]

Something to say?

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.