04/04/2013, 09:36
|
| | Fecha de Ingreso: abril-2013 Ubicación: Madrid
Mensajes: 4
Antigüedad: 11 años, 7 meses Puntos: 0 | |
Respuesta: JSON, clases y Arrays, ¿mala combinación? Al final, tras varios ensayos errores he conseguido que funcione como quiero, metiendo el contenido de ajax.php directamente en la página donde está la clase.
Sigo sin entender por qué funciona de una forma y no de otra la verdad, si el código es el mismo. - Página principal:
Código PHP:
<html xmlns="http://www.w3.org/1999/xhtml">
<head> <title>Ejercício</title> <script type="text/javascript" src="../js/jquery.js"></script> <script type="text/javascript" src="js.js"></script> <?php include "clases.php"; ?> </head>
<body> <div> <select name="filtro" id="filtro"> <option value="0" >Categoría</option> <option value="1" >Calzado</option> <option value="2" >Ropa</option> <option value="3" >Accesorios</option> </select> </div> <div name="productos" id="productos"> <?php $lista = new listado_productos(); echo $lista -> mostrar(); ?> </div> </body>
</html> - clases.php:
Código PHP: <?php $vr = $_GET["lista"]; $categoria = $_POST["cat"]; switch ($vr){ case "prueba": $filtro = new listado_productos(); $filtrado = $filtro -> mostrar($categoria); echo json_encode($filtrado); break; }
class listado_productos{ private $productos = array(); public function __construct() { $this -> productos[] = array(1,"Zapato",1); $this -> productos[] = array(2,"Zapatilla",1); $this -> productos[] = array(3,"Bota",1); $this -> productos[] = array(4,"Falda",2); $this -> productos[] = array(5,"Pantalón",2); $this -> productos[] = array(6,"Camisa",2); $this -> productos[] = array(7,"Bolso",3); $this -> productos[] = array(8,"Pulsera",3); }
function mostrar($categoria = 0){ $lista = ""; if ($categoria==0){ for($i = 0 ; $i < count($this -> productos) ; $i++){ $lista .= "<li>".$this -> productos[$i][1]."</li>"; } return "<ul>".$lista."</ul>"; } else{ for($i = 0 ; $i < count($this -> productos) ; $i++){ if ($categoria == $this -> productos[$i][2]){ $lista .= "<li>".$this -> productos[$i][1]."</li>"; } } return "<ul>".$lista."</ul>"; } } } ?> - js.js:
Código HTML: $(document).ready(function(){
$("#filtro").change(function(){
$.post("clases.php?lista=prueba",{ cat:$("#filtro").val()},function(datos){
alert("datos");
},"json");
});
});
|