
carga dinamica con ajax desde php
Publicado por Yuli (9 intervenciones) el 08/11/2014 15:15:23
Hola a todos!
Este tema es para que me ayuden a resolver un problema que tengo en cargar mi Index y como vi uno parecido en este foro de php creo que me van a poder ayudar.
Tengo mi index.php con un div id="contenido" al que le cargo desde la base (mysql) de forma inicial sitios mejores calificados, esto implica un query con join de tablas por lo que termino devolviendo un select con 6 datos por cada sitio, es decir una lista de sitios con 6 datos por mostrar cada uno.
Para eso llamo desde el header a "js/archivo.js" -> donde tengo:
.
.
.
Esto me devuelve todo undefined para cada campo y no se si es por la forma de consulta que estoy haciendo ya que el select traeria todos los registros que cumplan con la condicion y yo en el ajax.responseText los trato como si fueran valores planos de un array simple (no se si me explico bien! o si es otra cosa), lo estuve revisando y cambiando ajax.responseText[x][y] pero claramente eso no es y no encuentro la solucion. Tal vez sepan una mejor forma de hacerlo y de paso resolver cuando tenga mas datos en la base. Ademas es la primera vez que empiezo con POO en php y con ajax crei que seria mas facil..
Ante todo gracias por el tiempo. y espero puedan ayudarme
Este tema es para que me ayuden a resolver un problema que tengo en cargar mi Index y como vi uno parecido en este foro de php creo que me van a poder ayudar.
Tengo mi index.php con un div id="contenido" al que le cargo desde la base (mysql) de forma inicial sitios mejores calificados, esto implica un query con join de tablas por lo que termino devolviendo un select con 6 datos por cada sitio, es decir una lista de sitios con 6 datos por mostrar cada uno.
Para eso llamo desde el header a "js/archivo.js" -> donde tengo:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
function (){
var ini = "uno";
cargarIndex(ini)
}
function nuevoAjax() {
var xmlhttp = false;
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E) { xmlhttp = false; }
}
if (!xmlhttp && typeof XMLHttpRequest != 'undefined') { xmlhttp = new XMLHttpRequest(); }
return xmlhttp;
}
function cargarIndex(ini) {
//debugger;
var uno;
var capa = document.getElementById("contenido");
var ajax = nuevoAjax();
ajax.open("POST", "http://localhost/.../controllerPHP.php", true);
ajax.setRequestHeader("Content-Type", "application/x-www-form.urlencoded");
ajax.send("d=" + ini);
ajax.onreadystatechange = function () {
if (ajax.readyState == 4)
{
if(ajax.responseText != null)
capa.innerHTML = '<div class="contArticIzq"><article id="articPublic1" class="articPublic"><div class="parteSupArtic"><hgroup><a href="detalles_publicacion.php"><h3 class="tituloPublic">'+ajax.responseText[1]+'</h3></a></hgroup><div id="ciudadPublic1"><p class="ciudadPublic">'+ajax.responseText[5]+','+ajax.responseText[4]+'</p></div><img id="imagenPublic1" class="thumb" src="../imagenes/Hotel_Parque_Y_Sol.jpg" alt="Hotel Parque Y Sol"><div id="textoPublic1"><p>'+ajax.responseText[3]+'</p></div></div><div class="parteInfArtic"><div class="califPublic"><img src="../imagenes/5Estrellas.gif"></div></div></article></div>';
}
}
}
.
.
.
hasta ahora lo traigo asi porque estoy probando que en la base solo hay un sitio para mostrar (primero que salga lo simple y despues lo extiendo) por lo que mi php seria
<?php
include("../coneccion.php");
class establecimientoIndex{
public $val1;
public $val2;
public $val3;
public $val4;
public $val5;
public $val6;
function __construct($val1, $val2,$val3,$val4,$val5,$val6)
{
$this->val1= $val1;
$this->val2= $val2;
$this->val3= $val3;
$this->val4= $val4;
$this->val5= $val5;
$this->val6= $val6;
}
}
$tipoDato=$_POST['d'];
//switch($tipoDato)
if($tipoDato == 'uno')
{
echo obtenerLosMejoresCalificados();//break;
//case 'dos': echo 'no implemetado'; break;
}
function obtenerLosMejoresCalificados(){
$db = conectarbd();
$sql = "SELECT e.idEstableci,e.nombre,e.direccion,e.descripcion,p.descripcion,c.descripcion
FROM establecimiento e inner join ciudad c on e.idCiudad = c.id
inner join provincia p on c.idProvincia = p.id
WHERE calificacion = 5 and e.idEstado = 1
ORDER BY lat LIMIT 1";
$mejores = array();
$result = ejecutarQuery($db, $sql);
while($row = $result->fetch_assoc()){
$data= new establecimientoIndex($row['e.idEstableci'], $row['e.nombre'],$row['e.direccion'],$row['e.descripcion'],$row['p.descripcion'],$row['c.descripcion']);
array_push($mejores, $data);
}
cerrarConexion($db,$sql);
echo json_encode($mejores);
}
?>
.
.
Esto me devuelve todo undefined para cada campo y no se si es por la forma de consulta que estoy haciendo ya que el select traeria todos los registros que cumplan con la condicion y yo en el ajax.responseText los trato como si fueran valores planos de un array simple (no se si me explico bien! o si es otra cosa), lo estuve revisando y cambiando ajax.responseText[x][y] pero claramente eso no es y no encuentro la solucion. Tal vez sepan una mejor forma de hacerlo y de paso resolver cuando tenga mas datos en la base. Ademas es la primera vez que empiezo con POO en php y con ajax crei que seria mas facil..
Ante todo gracias por el tiempo. y espero puedan ayudarme
Valora esta pregunta


0