Ver Mensaje Individual
  #10 (permalink)  
Antiguo 04/04/2013, 09:36
socrabonit
 
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 $i count($this -> productos) ; $i++){
                    
    $lista .= "<li>".$this -> productos[$i][1]."</li>";
                    }
                    return 
    "<ul>".$lista."</ul>";
                }
                else{
                    for(
    $i $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");
    	});
    });