1
I’m not getting in jQuery Ajax to read this array encoded with PHP:
[{"voo_Cod":"1","voo_CidadeOrigem":"1","voo_CidadeDestino":"2","voo_Data":"2015-07-13 07:00:00","voo_Preco":"200"}]
My code in jquery,
<script>
$(function() {
$("#form").on("submit", function(event) {
event.preventDefault();
$.ajax({
url: "dadosJSON.php",
// dataType: "json",
type: "post",
data: $(this).serialize(),//manda os arquivos em linha
success: function(d) {
alert(d);
//testa se exista dados
if(d[0].erro){
$("h2").html(d[0].erro);
} else{
var html = "";
// var html =alert(d);
// executo este laço para ecessar os itens do objeto javaScript
for($i=0; $i < d.length; $i++){
html += " <strong>Voo Data e Horario</strong> "+ d[$i].voo_Data;
html += " <strong>Preco</strong> "+ d[$i].voo_Preco;
}//fim do laço
}//fim do else
$("body").html(html);
});
});
});
</script>
My code in PHP:
<?php
// header('Content-Type: application/json; charset=utf8');
require_once("./authSession.php");
require_once("./conf/confBD.php");
include_once("../html/cabecalho_main_Pessoal.html");
$nomeUser = ($_SESSION['nomeUsuario']);
//teste
//print_r($_POST);// you will get an array of all the values
try{
$conexao = conn_mysql();
}catch(PDOException $excep){
echo "Erro!: " . $excep->getMessage() . "\n";
die();
}
if(!empty($_POST['cidadeOrigem'])){
$cidOrigem = utf8_encode(htmlspecialchars($_POST['cidadeOrigem']));
$CidDestino = utf8_encode(htmlspecialchars($_POST['cidadeDestino']));
//$passageiros = utf8_encode(htmlspecialchars($_POST['Passageiros']));
echo "Contém arquivos";
}else{ echo "Não contém arquivos";}
// Captura os voos disponiveis no banco de dados instrução SQL básica (sem restrição de nome),
$SQLSelect = 'SELECT * FROM voos WHERE voo_CidadeOrigem=? AND voo_CidadeDestino= ?';
//prepara a execução da sentença
$operacao = $conexao -> prepare($SQLSelect);
$pesquisar = $operacao -> execute(array($cidOrigem, $CidDestino));
//$resultados = $operacao -> fetchAll();//resultado antigo
$resultados = $operacao->fetchAll(PDO::FETCH_ASSOC);//resultado com array associativo
// fecha a conexão (os resultados já estão capturados)
$conexao = null;
$dados_result = json_encode($resultados);
echo $dados_result;
?>
My answer creates a loop, with the indefinite variables.
Flight Date and Time Undefined Preco Undefined
Contains files
[{"voo_Cod":"1","voo_CidadeOrigem":"1","voo_CidadeDestino":"2","voo_Data":"2015-07-13 07:00:00","voo_Preco":"200"}]
In the log console, displays the code below
<!DOCTYPE html>
<html lang="pt-br">
<head>
<meta charset="UTF-8">
<title>SISTEMA DAW TURISMO</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="../CSS/estiloCabecalho.css">
<link rel="stylesheet" type="text/css" href="../CSS/estilo_login_teste.css">
<link rel="stylesheet" type="text/css" href="../CSS/estilo_cadastro.css">
<!--! funciona pra agenda lettering-->
<link href="../css/starter-template.css" rel="stylesheet">
<!-- Importando JavaScript -->
<!-- <script type="text/javascript" src="../JS/ajax_Jquery.js"></script>-->
<script>
$(function() {
$("#form").on("submit", function(event) {
event.preventDefault();
$.ajax({
url: "dadosJSON.php",
type: "post",
data: $(this).serialize(),
success: function(d) {
alert(d);
if (console) {
console.log(d);
}
if(d[0] && d[0].erro){
$("h2").html(d[0].erro);
} else {
var html = "", j = d.length;
for(var i=0; i < j; i++){
html += " <strong>Voo Data e Horario</strong> "+ d[i].voo_Data;
html += " <strong>Preco</strong> "+ d[i].voo_Preco;
}//else fecha
}
$("body").html(html);
}
});
});
});
</script>
</head>
<body>
<h1>SISTEMA DAW TURISMO</h1>
<nav id="primary_nav_wrap">
<ul>
<li class="current-menu-item"><a href="./mainPage_Pessoal.php">Home</a> </li>
<li><a href="./index.php">Reservas</a></li>
<li><a href="./alterar_Cadastro.php">Alterar Cadastro</a></li>
<li><a href="./mainPage_Pessoal.php">Passagens</a></li>
<li><a href="./hoteis.php">Hotéis</a></li>
<li><a href="./listarCompras.php">Listar Reservas</a></li>
<li><a href="./logout.php">Sair</a></li>
<!-- <li><a href="#">Reservas</a></li>
<li><a href="#">Contact Us</a></li> -->
</ul>
</nav>
</body>
</html>
In Javascript you don’t have the $ to get the index of the Array, you can do it directly like this: d[i]. voo_Preco, without the dollar sign.
– Giancarlo Abel Giulian
Thanks Giancarlo, I’ll try this way.
– Augusto
I performed the code without the dollar sign, but continued giving Undefined.
– Augusto
Give a.log(d) console instead of Alert and say what comes out in the browser console.
– bfavaretto
bfavaretto, continued giving in browser Flight Date and Time Undefined Price Undefined, really I do not know. Thank you
– Augusto
Look at the console (F12), and change Alert to console.log like I said.
– bfavaretto
bfavaretto, I did what you said. I went to the console also did not charge anything, continued giving the loop. It might be the json_encode array?
– Augusto
here bro... change this Alert(d); so console.log(d); But look, this is not a solution .. is just to better read the return of ajax within the browser console debug.. .
– Daniel Omine