Json_encode返回未定义的值

时间:2017-01-18 19:33:50

标签: php jquery json

我在使用php的json编码时遇到了麻烦,我总是未定义。

PHP:

<?php
     header('Content-Type: application/json');

     $link = mysqli_connect("localhost", "test", "", "canchas");

     if (mysqli_connect_errno()) {
        printf("Connect failed: %s\n", mysqli_connect_error());
        exit();
     }

     $consulta = "SELECT nombre FROM empresa";
     $resultado = mysqli_query($link, "$consulta"); 

     $data = array();
     while ($row = mysqli_fetch_row($resultado)){
        $data[] = $row;
    } 
    mysqli_close($link);

    echo json_encode($data);

?> 

jQuery的:

$.getJSON("listaCanchas.php", function(data) {
    alert(data.nombre);
});

如果我在我的php文件中这样做,它确实有效:

$data['nombre'] = "Pepe";
echo json_encode($data);

2 个答案:

答案 0 :(得分:0)

这可以改变这个:

 $data = array();
 while ($row = mysqli_fetch_row($resultado)){
    $data[] = $row;
} 

到此:

$data = array();
$i = 0;
while ($row = mysqli_fetch_row($resultado)){
    $data['nombre'][$i] = $row[0];
    $i++;
}

答案 1 :(得分:0)

mysqli_fetch_row将结果作为枚举数组返回,即每个属性都是一个数字。相反,您需要一个具有命名属性的关联数组。

您可以使用mysqli_fetch_assoc代替此操作。这将为您提供JSON中的对象数组,因此您可以更新到console.log(data[0].nombre)以对其进行测试。 data将是一个可以在JavaScript中迭代的对象数组。