Retornando múltiplos valores com AJAX

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

Bookmark and Share

3 Responses to “Retornando múltiplos valores com AJAX”


  1. 1Robson Junior

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

  2. 2Daniel Gianni

    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’;

    }

  1. [...] 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. [...]

Leave a Reply