março
3
2006
Retornando múltiplos valores com AJAX
Posted In: home by elm
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 do script PHP

Ué.. JSON serve exatamente para isso! http://www.json.org
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. [...]