Ir para conteúdo

Arquivado

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

Igor Ruschi Andrade Lima

Tranferir Array de php para Javascript

Recommended Posts

Olá, sou novo no mundo desenvolvimento web, na verdade estou fazendo um projeto pessoal apenas, mas sou programador de C, C++.

 

Sobre o tópico, percebi que há diversos tópicos semelhantes a este, no entanto minha dúvida não foi sanada lendo nenhum dos posts que encontrei, alias ela é diferente.

 

Eu consigo passar meu conteúdo do php para o JS mas só que ele chega no JS como uma String e não um array.

 

Vou exemplificar meu problema.

 

Tenho o seguinte array em php:

 

function teste(){

	$arr = array();
	
	$arr[0] = "Fulano";
	$arr[2] = "12345";
	$arr[3] = "ciclano";
	
	echo json_encode($arr);
}

 

E tenho o seguinte trecho de código em JS:

function get_php_value(){
		data = new Array();
		$.post( "busca_dados_bd.php", { func: "teste" })
		.done(function( data ) {
		alert( "Data Loaded: " + data );
		alert ("data transferd: " + data[0]);
		});
	}

get_php_value();

 

Desta forma o primeiro alert me mostra isso:

***" Data Loaded:{"0":"Fulano","2":"12345","3":"ciclano"} "***

e o segundo me mostra isso:

***"data transfered:{ "***

 

ou seja mesmo utilizando o json_encode ele não está me retornando um vetor e sim uma string.

Eu fiz um teste criando um array em JS e utilzando o alert para imprimi-lo inteiro o resultado não possui aspas ou colchetes, apenas os valores contidos no array

 

var y = ["fulano","ciclano"];

Alert (y);

o resultado é:
***" fulano, ciclano "***

 

Já tentei um cast (Array) data;

tentei manipular os dados com "replace", mas nada muda.

 

O meu problema real é eu tenho um banco de dados Mysql e utilizo o Php via PDO para acessar os dados, os dados retornados são arrays, e eu gostaria de enviar esses array para um outro array em js, mas de todas as formas que tentei só consegui a String.

 

function read_bd($PDO){
	
	$sql = "SELECT * FROM login";
	$result = $PDO->query( $sql );
	$rows = $result->fetch(PDO::FETCH_ASSOC);
	$rows = $result->fetch(PDO::FETCH_ASSOC);
	$rows = $result->fetch(PDO::FETCH_ASSOC);
	$rows = $result->fetch(PDO::FETCH_NUM);
	//echo $rows["username"];
	$json_rows = json_encode(array($rows));
}

está desta forma pois está apenas em teste...

 

Se alguém puder me dar uma ajuda agradeceria muito...

 

Obrigado pela atenção.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Na realidade, para o JavaScript, uma requisição sempre retornará uma string. Dessa forma, o parse deve ser explícito.

 

Apenas como conhecimento, para o jQuery, somente no método $.ajax você pode definir o tipo de retorno através do atributo dataType.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por clovis.sardinha
      Bom dia.
      Meu problema é o seguinte:
      Estou fazendo uma tabela e preciso mostrar o usuário e várias cidades que pertencem a este usuário.
      O resultado do array é o seguinte:

      Quando passo para a tabela os valores de cidade se repetem para o mesmo usuário até o final e retorna fazendo o mesmo para o próximo usuário. 
      Veja abaixo

       
      Meu código para a tabela é a seguinte:
      <tr> <td align="left"><?php echo $usuario['nome'] ?></td> <td align="left"><?php echo $usuario['nome_orgao'] ?></td> <td align="left"><?php echo $usuario['nome_funcao'] ?></td> <?php foreach($destinos as $key=>$destino):?> <?php $key=0;?> <td align="left"> <?php foreach($destino as $chave=> &$cidade): ?> <?php echo $cidade['cid_nome']."-";?> <?php endforeach;?> </td> <?php $key+=$key; ?> <?php endforeach;?> <td><?php echo date('d/m/Y', strtotime( $usuario['created_at'])) ?></td> <td align="left"><a href="<?php echo base_url('UserAdmin/Usuario/getUsuarioById')."/".$usuario['id_user'] ?>">DETALHES</a></td> </tr> <?php endforeach ?> Onde estou errando? O que tenho de fazer para percorrer este array de modo a aparecer apenas as cidades pertencentes a cada usuário?

    • Por Giovanird
      Listo um array pelo foreach e preciso pegar os valores fora do foreach.
      Abaixo tenho o exemplo do foreach com os valores
       
      <?php foreach($turma $rsturma): if(($rsturma['id'] == 1){ echo $rsturma['nome']."<br>"; echo $rsturma['idade']."<br><br>"; } endforeach; //Dentro do foreach me retorna: Luis 13 Maria 12 Carlos 12 Matheus 14 Andréa 12 //Preciso pegar a posição e o valor desta lista $posicao1 = 1; $nome1 = Luis; $posicao2 = 2; $nome2 = Maria; $posicao3 = 3; $nome3 = Carlos; $posicao4 = 4; $nome4 = Matheus; $posicao5 = 5; $nome5 = Andréa;  
×

Informação importante

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