2016-08-28 4 views
0

ich diese Abfrage mit einer while-Schleife in der Server-Seite habe und das Ergebnis als json hallte:undefiniert jquery json Ergebnis

$sql = mysqli_query($dbc, "SELECT * FROM tienda_prod WHERE prod_activo ='1' ORDER BY prod_fechacreado DESC"); 

$results = array(); 
while($row = mysqli_fetch_array($sql, MYSQLI_ASSOC)){ 

    $results[] = array(
     'id' => $row["prod_id"], // or smth like $row["video_title"] for title 
     'user' => $row["user_id"], 
     'categoria' => $row["cat_id"], 
     'subcategoria' => $row["subcat_id"], 
     'titulo' => $row["prod_titulo"], 
     'descripcion' => $row["prod_descripcion"], 
     'precio' => $row["prod_precio"], 
     'moneda' => $row["prod_moneda"], 
     'condicion' => $row["prod_condicion"], 
     'marca' => $row["prod_marca_id"], 
     'destacado' => $row["prod_destacado"], 
     'envios' => $row["prod_envios"], 
     'permuta' => $row["prod_permuta"], 
     'modelo' => $row["prod_modelo"], 
     'fecha_creado' => $row["prod_fechacreado"], 
     'fecha_moderado' => $row["prod_fechamoderado"], 
     'activo' => $row["prod_activo"] 
    );  


} 
header('Content-Type: application/json'); 


    echo json_encode($results); 

Wenn ich dieses Skript ausführen bringt es mir nur das erste Objekt und der Rest ist nicht definiert .

$.ajax({ 
      url: 'tienda-app/listing.php', 
      type: 'GET', 
      dataType: 'json', 
      //data: , 
      success: function(data){ 


       for (var i = 0; i < data.length; i++) { 


         var data = '' 
         + '<div class="col-xs-6 col-md-4 column productbox">' 
          + '<a href="detalle_producto.php#' + + data[i].id +'">' 
           + '<img src="https://unsplash.it/270/270/?random=4" class="img-responsive">' 
          + '</a>' 
          + '<div class="product-info">' 
          + ' <div class="product-title"><a href="detalle_producto.php#' + + data[i].id +'">' + data[i].titulo + '</a></div>' 
          + '<div class="product-price">' 
          + '<div class="pull-right"><a href="detalle_producto.php#' + + data[i].id +'" class="btn btn-info btn-sm" role="button">Ver</a></div>' 
          + '<div class="pricetext">$'+ data[i].precio + '</div></div>' 
          + '<div class="col-separador-s"></div>' 
          + '</div>' 
         + '</div>' 

        $('#listado_tienda').append(data); 
       } 
      } 
     }); 

Ich kann nicht herausfinden, warum es nur das erste Objekt und den Rest der Ergebnisse (viel) bringt, ist nicht definiert.

+0

Rufen Sie das Skript direkt, was geschieht dann? –

Antwort

3

Sie definieren das Datenobjekt mit var data = '' neu. Also ändere den Namen.

0

Dies passiert, weil Sie Ihre Daten (Response-Ergebnis) nach der ersten Schleife auf leer setzen. So ändern:

var data = '' 
        + '<div class="col-xs-6 col-md-4 column productbox">' 
         + '<a href="detalle_producto.php#' + + data[i].id +'">' 
          + '<img src="https://unsplash.it/270/270/?random=4" class="img-responsive">' 
         + '</a>' 
         + '<div class="product-info">' 
         + ' <div class="product-title"><a href="detalle_producto.php#' + + data[i].id +'">' + data[i].titulo + '</a></div>' 
         + '<div class="product-price">' 
         + '<div class="pull-right"><a href="detalle_producto.php#' + + data[i].id +'" class="btn btn-info btn-sm" role="button">Ver</a></div>' 
         + '<div class="pricetext">$'+ data[i].precio + '</div></div>' 
         + '<div class="col-separador-s"></div>' 
         + '</div>' 
        + '</div>' 

       $('#listado_tienda').append(data); 

zu

var dataHtml= '' 
        + '<div class="col-xs-6 col-md-4 column productbox">' 
         + '<a href="detalle_producto.php#' + + data[i].id +'">' 
          + '<img src="https://unsplash.it/270/270/?random=4" class="img-responsive">' 
         + '</a>' 
         + '<div class="product-info">' 
         + ' <div class="product-title"><a href="detalle_producto.php#' + + data[i].id +'">' + data[i].titulo + '</a></div>' 
         + '<div class="product-price">' 
         + '<div class="pull-right"><a href="detalle_producto.php#' + + data[i].id +'" class="btn btn-info btn-sm" role="button">Ver</a></div>' 
         + '<div class="pricetext">$'+ data[i].precio + '</div></div>' 
         + '<div class="col-separador-s"></div>' 
         + '</div>' 
        + '</div>' 

       $('#listado_tienda').append(dataHtml);