Ver Mensaje Individual
  #1 (permalink)  
Antiguo 12/02/2010, 22:32
Avatar de Fernarey1810
Fernarey1810
 
Fecha de Ingreso: noviembre-2008
Mensajes: 214
Antigüedad: 16 años
Puntos: 1
Pregunta Problemas indefinido...?

Hola a todos... y voy al grano. Hago clic sobre un enlace

Código HTML:
Ver original
  1. <div onclick="detalle(1)" class="nombreProducto">

que debe activar esta funcion (esta funcion cuando recibe los resultados llama a esta otra: onfinish: mostrarDetalle, esta definida mas abajo)

Código Javascript:
Ver original
  1. function detalle(id) {
  2.     // busca los detalles del producto en el servidor
  3.     $Ajax("producto.php?id="+id, {
  4.         onfinish: mostrarDetalle,    
  5.         tipoRespuesta: $tipo.JSON,
  6.         avisoCargando: "cargando"
  7.     });
  8. }

Como veran hago una instancia del objeto XMLHttpRequest... utilizando una libreria que funciona perfectamente. Le paso un parametro: producto.php?id=id, por ej onclick="detalle(1)".

El codigo PHP debe retornar un string tipo JSON, funciona perfectamente este codigo, por las dudas lo pongo pero no es el problema (aclaro que todo esto es solo por practica no para una pagina online):

Código PHP:
Ver original
  1. <?php
  2. include 'db.php';
  3.  
  4. $producto = $_GET['id'];
  5.  
  6. $query = "SELECT `productos`.*, `categorias`.`nombre` AS 'categoria' FROM `productos` INNER JOIN `categorias` ON `idCategoria` = `categorias`.`id` WHERE `productos`.`id` = ".$producto;
  7. $result = mysql_query($query, $GLOBALS['DB']);
  8. $count = mysql_num_rows($result);
  9.  
  10. $cadena = "[";
  11. $i = 1;        
  12. while ($row = mysql_fetch_array($result)) {
  13.      $cadena .= "{\"id\": \"".$row['id']."\", \"nombre\": \"".$row['nombre']."\", \"descripcion\": \"".$row['descripcion']."\", \"precio\": \"".$row['precio']."\", \"foto\": \"".$row['foto']."\", \"categoria\": \"".$row['categoria']."\"}";
  14.      
  15.      if ($i != $count)
  16.         $cadena.= ", ";
  17.            
  18.      $i++;
  19. }
  20. $cadena .= "]";
  21. echo $cadena;
  22. ?>

Este es el JSON que retorna, simple una cadena comun y corriente:

[{"id": "1", "nombre": "Aceite de Oliva", "descripcion": "El aceite de oliva es un aceite vegetal de uso principalmente culinario que se extrae del fruto recién recolectado del olivo (Olea europaea) denominada oliva o aceituna.", "precio": "12.5", "foto": "aceite-de-oliva.jpg", "categoria": "Aceites"}]

Cuando quiero interpretar esta cadena, con su respectivo codigo JavaScript:

Código Javascript:
Ver original
  1. function mostrarDetalle(producto) {
  2.     // creo el contenido de la zona de detalle
  3.     var html = "<div class='detalleNombre'>"+producto.nombre+"</div>";
  4.    
  5.     if (producto.foto != "") {
  6.         // si tiene foto, la incluimos
  7.         html += "<img src='img/"+producto.foto+"' class='detalleFoto' />";
  8.     }
  9.     html += "<input type='button' class='detalleAgregar' value='Agregar al Canasto' onclick='agregar("+producto.id+")' />";
  10.     html += "<div class='detalleCategoria'>Categoria: "+producto.categoria+"</div>";
  11.     html += "<div class='detallePrecio'>Precio: $"+producto.precio+"</div>";
  12.     html += "<div class='detalleDescripcion'>"+producto.descripcion+"</div>";
  13.     $("listaDetalle").innerHTML = html;
  14. }

FIREBUG me muestra el siguiente error, y por ende no puedo tomar los datos... Tienen idea que ocurre????

http://s2.subirimagenes.com/imagen/40555711.png

Última edición por Fernarey1810; 12/02/2010 a las 22:56