Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Andrew Marques

Retornar mais de um dado com ajax

Recommended Posts

Ola pessoal,

to fazendo um script aqui, que quando eu digito o codigo de barras de um produto, num input ele retornar o nome do produto em outro campo...

 

Até ai ta tudo certo, estou fazendo com ajax e php + mysql...

 

O problema é que preciso recuperar mais de um campo, sendo o campo valor junto...

 

Então quando eu digitar codigo de barras tem q preencher um campo com o nome e outro campo com o valor...

 

Está assim meu código...

 

Javascript

$(document).on('change', '#cod', function(){
        /* aqui pegamos a url a ser consultada por ajax */
        var url = 'busca.php';
        /* aqui pegamos o cod(o código que foi digitado dentro do input com id igual a cod) */
        var cod = $(this).val();
        /* aqui pegamos o indice do .linhas */
        var indice = $(this).parent().parent().index();
        /* aqui pegamos o objeto .linhas */
        var obj = $(this).parent().parent();
        /* aqui realizamos a consulta ajax*/
        $.ajax({
            method: 'get',
            url: url,
            data: "cod="+cod, /* aqui vai o codigo do input digitado */
            success: 
				function(nome){
                /* aqui com o retorno do ajax na pagina buscar.php(exemplo), percorremos o obj e colocamos o valor no input nome */
                $(obj).each(function(){
                    $(this).children(':eq(2)').children().val(nome);
                })
            }
        })
    })

 

Html:

<tr class="linhas">
                <td align="center">
                    <a href="#" class="removerCampo" title="Remover linha">
                        <img src="../sistema_novo/img/icon_del.png" alt="" />
                    </a>
                </td>
                <td>
                    <input name="index_linha[]" type="hidden" value="1"/>
                    <input type="text" name="cod[]" id="cod"/> <!-- busca -->
                </td>
                <td>
                    <input type="text" name="nome_acesso[]" disabled="disabled" >
                </td>
                <td>
                    <input name="qtd[]" type="text" size="7" maxlength="3" />
                </td>
                <td>
                    <input type="text" name="subtotal[]" disabled="disabled" >
                </td>
                <td>
                    <input type="text" name="subtotal[]" disabled="disabled" >
                </td>
            </tr>

 

 

Busca.php

<?php
$conecta = mysql_connect('localhost', 'root', '');
$sel_db  = mysql_select_db('sistema');

$cod = $_GET['cod'];

$sel = mysql_query("SELECT * FROM produtos WHERE cod_barras = '{$cod}'") or die(mysql_error());
$cont = mysql_num_rows($sel);
if($cont >= 1){
$res = mysql_fetch_array($sel);
echo $res['nome'];
}else{
echo "Produto não encontrado!";
}
?>

 

O que devo adaptar para trazer dois valores e exibi-los?

Compartilhar este post


Link para o post
Compartilhar em outros sites

retorna um json cara.

 

é um array no php, convertido com o json_encode()

 

ai vc consegue ler separado no JS

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fiz assim:

 

<?php
$conecta = mysql_connect('localhost', 'root', '');
$sel_db  = mysql_select_db('sistema');

$cod = $_GET['cod'];

$sel = mysql_query("SELECT * FROM produtos WHERE cod_barras = '{$cod}'") or die(mysql_error());
$cont = mysql_num_rows($sel);
if($cont >= 1){
	$rows = array();
	while($r = mysql_fetch_array($sel)){
	$rows[] = array_map("utf8_encode",$r);
	}
	echo json_encode($rows);
}else{
echo "Produto não encontrado!";
}
?>

 

 

E agora como posso puxar lá no Javascript??

Compartilhar este post


Link para o post
Compartilhar em outros sites

aqui:

success: function(nome){

faz o seguinte:

success: function(data) {
   console.log(data);
   console.log(data[0].cod_barras);
}

e ai verifica no console do browser como está o objeto, e se o data[0].cod_barras retornou certinho.

 

se tiver dúvidas, poste aqui o primeiro console.log q fiz, do argumento data.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O console.log(data.cod_barras) retornou undefined

 

e o console.log(data) retornou:

 

[{"0":"4","id":"4","1":"Produto 01","nome":"Produto 01","2":"2","categoria":"2","3":"22","marca":"22","4":"4","unidade_venda":"4","5":"12","fornecedor":"12","6":"54.90","custo":"54.90","7":"59.90","valor":"59.90","8":"7897653519941","cod_barras":"7897653519941","9":"63","quant_estoque":"63"}]



//edit

 

Uncaught ReferenceError: data is not defined

Compartilhar este post


Link para o post
Compartilhar em outros sites

tenta assim:

console.log(data[0].nome);
console.log(data[0].fornecedor);

e assim em diante.

Compartilhar este post


Link para o post
Compartilhar em outros sites

verifica se a linha do success tá assim:

success: function(data) {

caso esteja, adicione isso no php, em cima do echo

header('Content-type: application/json');

e no ajax, adicione:

$.ajax({
            method: 'get',
            url: url,
            type: 'GET',
            dataType: "json",

Compartilhar este post


Link para o post
Compartilhar em outros sites

O script inteiro está assim:

 

$(document).on('change', '#cod', function(){
        /* aqui pegamos a url a ser consultada por ajax */
        var url = 'busca.php';
        /* aqui pegamos o cod(o código que foi digitado dentro do input com id igual a cod) */
        var cod = $(this).val();
        /* aqui pegamos o indice do .linhas */
        var indice = $(this).parent().parent().index();
        /* aqui pegamos o objeto .linhas */
        var obj = $(this).parent().parent();
        /* aqui realizamos a consulta ajax*/
        $.ajax({
            method: 'get',
            url: url,
            data: "cod="+cod, /* aqui vai o codigo do input digitado */
            success:
					function(data){
					/* aqui com o retorno do ajax na pagina buscar.php(exemplo), percorremos o obj e colocamos o valor no input nome */
					console.log(data[0].nome);
					console.log(data[0].fornecedor);
					}
        })
    })

 

E esses dois:

console.log(data[0].nome);
console.log(data[0].fornecedor);
estão aparecendo UNDEFINED
O que está de errado??

Compartilhar este post


Link para o post
Compartilhar em outros sites

adiciona isso aqui:

$.ajax({

method: 'get',

url: url,

type: 'GET',

dataType: "json",

Compartilhar este post


Link para o post
Compartilhar em outros sites

O console.log(data[0].nome); está aparecendo o nome do console certinho...

 

Tentei assim para colocar no input e não foi:

 

$(this).children(':eq(2)').children().val(data[0].nome);

 

O que ta errado mano?

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse teu seletor ai tá muito complicado. Faz assim:

$("input[name='nome_acesso[]']").val(data[0].nome);

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.