Miren lo que me pasa es que estoy regresando un html por json y me llega vacío si dejo de devolverlo por json y lo recibo normal, entonces si llega bien y no se porque o que es el error:
estos son los códigos:
ajax
function realizaProceso(){
var parametros = {};
$.ajax({
data: parametros,
url: '../controllers/index.php',
type: 'post',
dataType: 'json',//esta linea la quito cuando no uso el json
beforeSend: function () {
},
error: function (request, status, error) {
console.log(3);
console.log(request);
console.log(status);
console.log(error);
console.log(4);
},
success: function (response) {
alert("4");
/*var randomColor = '#'+ ('000000' + Math.floor(Math.random()*16777215).toString(16)).slice(-6);
$('#resultado').css({
'background-color' : randomColor,
});*/
console.log(response);
$(".loader").hide();
$(".carousel-congratulations").html(response.congratulations);
$(".carousel-birthdays").html(response.birthdays);
$(".carousel-events").html(response.events);
window.history.pushState("", "", '/iq/tv');
}
});
$.ajax({
data: parametros,
url: '../controllers/changeVideo.php?opcion=leer',
dataType: "json",
success: function (response) {
$(".urlVideo").attr("src", response[1]);
}
});
}
este es el controlador o donde se hace la consulta
<?php
//fecha del dia de hoy
setlocale(LC_TIME, 'es_ES');
$hoy = getdate();
$day=$hoy['mday'];
$month=$hoy['mon'];
$year=$hoy['year'];
// Conectando, seleccionando la base de datos
include_once "con.php";
$sentencia = $con->prepare("SELECT * FROM congratulations WHERE id= ?;");
$sentencia->execute([1]);
$result = $sentencia->fetchAll(PDO::FETCH_OBJ);
$estado ="active";
$congratulations = "";
$contador=0;
foreach($result as $fila) {
$congratulations .= '<div class="carousel-item '.$estado.'">';
$estado="";
$col_image=($fila->image==NULL) ? "default.png" : "felicitaciones/homenajeado".$fila->id."/".$fila->image ;
$col_title=$fila->title;
$col_detail=$fila->detail;
$congratulations .= '<div class="not-item">';
$congratulations .= '<div class="item-t ">'.$col_title.'</div>';
$congratulations .= '<div class="row">';
$congratulations .= '<div class="card sin-border">';
$congratulations .= '<div class="card-body">';
$congratulations .= '<div class="col" style="border-color: transparent;"><img class="img-l" src="../images/'.$col_image.'" /></div>';
$congratulations .= '</div></div>';
$congratulations .= '<div class="col" style="border-color: transparent;">';
$congratulations .= '<div class="card sin-border">';
$congratulations .= '<div class="card-body">';
$congratulations .= '<p class="card-text text-left"> Ciudad: '.$col_detail.'</p>';
$congratulations .= '</div></div></div></div></div></div>';
$contador++;
}
$congratulations .= ($contador>0) ? "" : "<div class='carousel-item active'><div class='cum-item'><div class='name fleft'>No hay cumpleaños el dia de hoy</div></div></div>";
$sentencia = $con->prepare("SELECT * FROM birthdays WHERE day= ? AND month= ?;");
$sentencia->execute([$day, $month]);
$result = $sentencia->fetchAll(PDO::FETCH_OBJ);
$estado ="active";
$birthdays = "";
$contador=0;
foreach($result as $fila) {
$birthdays .= '<div class="carousel-item '.$estado.'">';
$estado="";
$birthdays .= '<div class="cum-item">';
$col_image=($fila->image==NULL) ? "default.png" : $fila->id."/".$fila->image ;
$col_name=$fila->name;
$col_surname=$fila->surname;
$col_job=$fila->job;
$birthdays .= '<div class="img-cum fleft sin-border"><img class="img-l" src="../images/'.$col_image.'" /></div>';
$birthdays .= '<div class="col sin-border">';
$birthdays .= '<div class="row">';
$birthdays .= '<div class="name fleft">'.$col_name.'<br/>'.$col_surname.'</div></div>';
$birthdays .= '<div class="row">';
$birthdays .= '<div class="cargo fel "> '.$col_job.'</div>';
$birthdays .= '</div></div></div></div>';
$contador++;
}
$birthdays .= ($contador>0) ? "" : "<div class='carousel-item active'><div class='cum-item'><div class='name fleft'>No hay cumpleaños el dia de hoy</div></div></div>";
$sentencia = $con->prepare("SELECT * FROM events WHERE year>= ?");
$sentencia->execute([2018]);
$result = $sentencia->fetchAll(PDO::FETCH_OBJ);
$estado ="active";
$events = "";
foreach($result as $fila) {
$events .= '<div class="carousel-item '.$estado.'">';
$estado="";
$events .= '<div class="event-item">';
$events .= '<div class="row">';
$col_name = $fila->name;
$col_description = $fila->description;
$col_city = $fila->city;
$col_place = $fila->place;
$col_day = $fila->day;
$col_month = strftime("%B", DateTime::createFromFormat('m', $fila->month)->getTimestamp());
$col_month = ucwords(strtolower($col_month));
$col_hour = strftime("%I", DateTime::createFromFormat('H', $fila->hour)->getTimestamp());
$col_minute = $fila->minute;
$col_format = DateTime::createFromFormat("H", $col_hour);
$col_format = $col_format->format("a");
$events .= '<div class="card sin-border">';
$events .= '<div class="card-body">';
$events .= '<div class="col sin-border"><h3 class="text-truncate text-center">'.$col_day.'<small> '.$col_month.'</small></h3></div>';
$events .= '</div></div>';
$events .= '<div class="col sin-border">';
$events .= '<div class="card sin-border" style="border-left-color: rgba(0, 0, 0, .10) !important;">';
$events .= '<div class="card-body">';
$events .= '<h2 class="card-title text-left">'.$col_name.'</h2>';
$events .= '<p class="card-text text-left"> Ciudad: '.$col_city.'</p>';
$events .= '<p class="card-text text-left">Lugar: '.$col_place.'</p>';
$events .= '<p class="card-text text-left">Hora: '.$col_hour.':'.$col_minute.' '.$col_format.'</p>';
$events .= '<p class="card-text text-left"><small>Interesados escribir a info@iqinterquirofanos.co</small></p>';
$events .= '</div></div></div></div></div></div>';
$contador++;
}
si al controlador le agrego :
echo $congratulations.$birthdays.$events;
?>
en el console me sale esto:
como pueden ver me muestra el código html de las consultas que necesito.
pero si poor el contrario agrego al controlador esto:
header('Content-Type: application/json');
//Guardamos los datos en un array
$datos = array(
'estado' => 'ok',
'congratulations' => $congratulations,
'birthdays' => $birthdays,
'events' => $events
);
//Devolvemos el array pasado a JSON como objeto
echo json_encode($datos, JSON_FORCE_OBJECT);
?>