Ir para conteúdo

Arquivado

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

FH_Camara

Problema com passagem de array do php para js via ajax

Recommended Posts

Andei estudando um pouco sobre o AJAX e estou tentando implementar a consulta ao banco de dados via ajax no sistema que eu tenho aqui.

Eu devo escolher um aluno de uma lista e, uma vez escolhido o mesmo, devo apresentar os dados cadastrais do aluno como (Dados pessoais, Dados do trabalho, Dados da Banca Examinadora).

Nessa mesma página eu fiz um ajax para preencher o <select> com os nomes dos alunos, funcionou tranquilo. O meu problema está no ajax com o método POST quando eu preciso enviar um dado ao arquivo php que fará a leitura do banco de dados, por exemplo o Nome do aluno selecionado no <select>. Estou utilizando o log do Chrome e não tem retorno algum do arquivo php.

Tudo quanto é tutorial que encontrei na internet falava apenas da transferência do array do php pro javascript na forma do $getJson().

Alguém saberia me dizer o que estaria dando errado?

Esse é o código do ajax:

$('#EscolheAluno').click(function(){
	$.ajax({
		type: 'POST',
		data:{'Nome1':$('#Nome1').val()},
		url: 'dadosaluno6.php',
		dataType:'json',
		success: function(data) {
			document.getElementById("target").style.display = "block";
			document.getElementById("demo").innerHTML = nome;
		}
	});
}) 

E esse é o do php:

<?php
	$login_cookie = $_COOKIE['User_Admin'];
	include '../includes/connection.php';
	if(isset($login_cookie)){
		$Nome_A = $_POST['Nome1'];
			//DADOS DO ALUNO
			$consulta2 = mysqli_query($conn,"SELECT * FROM Alunos where Nome = '$Nome_A'") or die(mysqli_error());
			$dados2    = mysqli_fetch_array($consulta2);
			$NivelTCC  = $dados2['Nivel'];
			$Senha = $dados2['Senha'];
			if ($NivelTCC  == 1){
				$res  = mysqli_query($conn,"SELECT * FROM TCC1 where Nome_Aluno = '$Nome_A'") or die(mysqli_error());
			}elseif ($NivelTCC == 2){
				$res  = mysqli_query($conn,"SELECT * FROM TCC2 where Nome_Aluno = '$Nome_A'") or die(mysqli_error());
			}
			//faz o loop para preencher o campo criado com os valores retornados na consulta
			$result = array();
			while ($row = mysqli_fetch_array($res)) {
				$result[] = array(
					'id' => $row['Id'],
					'mat' => $row['Matricula'],
					'nome' => $row['Nome'],
					'inicio' => $row['Inicio'],
					'nomeo' => $row['Nome_Orientador'],
					'nomec' => $row['Nome_Coorientador'],
					'area1' => $row['Area1'],
					'area2' => $row['Area2'],
					'aprovado' => $row['Aprovado'],
					'titulo' => $row['Titulo'],
					'Av1' => $row['Avaliador1'],
					'Av2' => $row['Avaliador2'],
					'Av4' => $row['Avaliador4'],
					'defesa' => $row['DataDefesa'],
					'hora' => $row['HorarioDefesa'],
					'local' => $row['Local'],
				);
			}
		echo json_encode($result);
		mysqli_close($conn);
	}else{
		echo "<strong><font size='2' color='#FFA500' face= 'Arial'>Bem-Vindo(a),</font> <font color='red'> convidado(a). </font></strong><br>";
		echo "<hr color='#FFA500' align='left' width='100%' height='2'><br><br>";
		echo"Essas informações <font color='red'><strong>NÃO PODEM</strong></font> ser acessadas por você.<br><br>";
		echo"<br><a href='../login2.php'>Faça Login</a> para ter acesso ao conteúdo.";
	}
?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Assumindo que o pedido está a ser feito correctamente, substitui

document.getElementById("demo").innerHTML = nome;

por

document.getElementById("demo").innerHTML = data.nome;

Já agora, uma vez que estás a usar jQuery, não há necessidade de misturá-lo com JavaScript nativo.

As duas linhas dentro do retorno do pedido AJAX podem ser substituídas por:

$("#target").css("display", "block");
$("#demo").html(data.nome);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Valeu wootzor.

Mas o problema era no arquivo php. Quando ele conectava ao banco de dados tinha uma diferença entre os nomes das colunas do DB com o que eu chamava no php.

Com relação à mistura entre o jQuery e Javascript nativo, já fiz a correção.

Tudo funciona corretamente agora.

 

Obrigado pela atenção.

Abraço.

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.