未定义的jquery json结果

时间:2016-08-28 00:56:32

标签: php jquery json

我在服务器端有一个带有while循环的查询,结果回显为json:

$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 );

当我运行这个脚本时,它只给我带来第一个对象,其余的未定义。

$.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);
                }
            }
        });

我无法找出为什么它只带来第一个对象,其余的结果(很多)都是未定义的。

2 个答案:

答案 0 :(得分:3)

您使用var data = ''重新定义数据对象。所以改名。

答案 1 :(得分:0)

这种情况正在发生,因为您在第一次循环后将数据(响应结果)设置为空。所以改变:

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);

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);