Не conigo чтения массива, закодированные с помощью PHP в json
я Не получаю, в jQuery Ajax прочитать эту array, закодированный PHP:
[{"voo_Cod":"1","voo_CidadeOrigem":"1","voo_CidadeDestino":"2","voo_Data":"2015-07-13 07:00:00","voo_Preco":"200"}]
Мой код в 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>
Мой код в 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;
?>
Моя сброшен создает loop, переменных, неопределенные.
Рейса, Дата и Horario undefined Цены undefined
Содержит файлы
[{"voo_Cod":"1","voo_CidadeOrigem":"1","voo_CidadeDestino":"2","voo_Data":"2015-07-13 07:00:00","voo_Preco":"200"}]
В консоли журнала, показывает код ниже
<!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>
2 answers
Если я понял хорошо, то проблема может быть в PHP, это добавить заголовок в PHP так:
DadosJSON.php:
<?php
header('Content-Type: application/json; charset=utf8');
//Resto do seu código PHP abaixo
Замените charset необходимости
, И я рекомендую использовать хороший отступ и всегда использовать var
при объявлении новости переменные, также всегда рекомендую setar o .length
в переменную, а не внутри цикла, и вместо того, чтобы alert
используйте console.log
для отладки кода:
$(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;
}
}
$("body").html(html);
}
});
});
});
Обратите Внимание, что теперь alert(d)
покажет [Object object]
, Любя, просмотра данных, передаваемых на консоли используйте сочетание клавиш Command + Option + J (Mac) и Ctrl + Shift + J (Windows/Linux).
Обновлении
Согласно output console.log
файл dataJSON.php
возвращает тело HTML.
Нельзя смешивать HTML с JSON, таким образом, убедитесь, что вы добавили это:
include_once("../html/cabecalho_main_Pessoal.html");
, что, вероятно, является HTML, но ваш ответ должен быть JSON, смешивать HTML с JSON приведет к тому, что интерпретатор не в состоянии "анализировать" json, затем удалите то, что не будет использовать.
См. также, что сообщения об ошибках должны быть json, попробуйте так:
<?php
header('Content-Type: application/json; charset=utf8');
require_once("./authSession.php");
require_once("./conf/confBD.php");
$nomeUser = ($_SESSION['nomeUsuario']);
//teste
//print_r($_POST);// you will get an array of all the values
try{
$conexao = conn_mysql();
}catch(PDOException $excep){
echo json_encode(array("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']));
} else {
echo json_encode(array("Não contém arquivos"));
die();
}
// Captura os voos disponíveis 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;
die();
?>
, Ответ от @Guilherme правдоподобно, по-видимому, это проблема.
Как он может быть уже решена ваша проблема, я reescrevi свой код, не использовать $.ajax
, потому что он не является лучшим решением, я не совсем понял, что ваш код делает в целом, но я сделал что-то через подобное и в - GET
, но может изменить пра - POST
, если хотите, если в другой день вы хотите, чтобы адаптироваться к их конструкции или если кто-то хочет использовать что-то более чистое в jQuery
HTML:
<script type="text/javascript" language="JavaScript" src="https://code.jquery.com/jquery-latest.js"> </script>
<form id="exemplo">
<input type="submit" value="Simbora" />
</form>
<body>
<h2></h2>
</body>
СЦЕНАРИЙ:
<script>
$(function() {
var n = 0;
var html = "";
$("form").on("submit", function(event) {
event.preventDefault();
$.getJSON('dadosJSON.php', function(d) {
if(!d.voo_Data){
$("h2").html(d.erro);
} else {
//Buscaria todos os dados da JSON.
/*$.each(d, function (k,v) {
html += " <strong>"+k+":</strong> "+ v +"<br/>";
});*/
html += " <strong>Voo Data e Horario</strong> "+ d.voo_Data;
html += " <strong>Preco</strong> "+ d.voo_Preco;
$("body").html(html);
}
});
});
});
</script>
PHP:
<?php
$data = (object)array("voo_Cod"=>"1",
"voo_CidadeOrigem"=>"1",
"voo_CidadeDestino"=>"2",
"voo_Data"=>"2015-07-13 07:00:00",
"voo_Preco"=>"200");
echo json_encode($data);
//Erro
/*
$erro = (object)array("erro"=>"Houve algum problema");
echo json_encode($erro);*/