使用PHP& amp;从表加载数据AJAX

时间:2017-07-03 19:45:02

标签: javascript php jquery mysql ajax

我尝试使用PHP和AJAX从表中检索数据,目前我能够以json格式显示查询结果,我想要做的是从中选择一个特定的数据那个数组,例如我得到这个数组:

  

{data:[{IdProduct:" 1",姓名:"姓名在这里..........",...}]}

例如,我想只选择名称,我尝试这样做:

function LoadProductos() {

$.ajax({
    url: '../../class/loadProd.php',
    method: 'POST',
    success: function (data) {
      var aRC = JSON.parse(data);

      for (var i = 0; i < aRC.length; i++) {
        console.log(aRC[i].Name);
      }
    }

  });
}

但这并没有显示任何内容,我该怎么做?这是我的PHP代码:

while($row = mysqli_fetch_array($registros)) {

    $table.='{
        "IdProduct":"'.$row['IdProduct'].'",
        "Name":"'.$row['Name'].'",
        "Description":"'.$row['Description'].'",
        "ImagePath":"'.$row['ImagePath'].'"
    },';

    $table = substr($table, 0, strlen($table) -1);

    echo '{"data":['.$table.']}';
}

3 个答案:

答案 0 :(得分:4)

您需要在代码中更改一些内容,例如:

  • 这不是你应该如何创建一个json字符串。在while()循环之前创建一个空数组,并在循环的每次迭代中将行详细信息附加到此数组。在退出循环之后,只需将json_encode()函数应用于结果数组即可获得最终的json字符串。

    $table = array();
    while($row = mysqli_fetch_array($registros)) {
        $table[]= array(
            'IdProduct' => $row['IdProduct'],
            'Name' => $row['Name'],
            'Description' => $row['Description'],
            'ImagePath' => $row['ImagePath']
        );
    }
    echo json_encode($table);
    
  • 由于您期望从服务器获取json字符串,请将此设置dataType:'json'添加到您的AJAX请求中。 dataType是您期望从服务器返回的数据类型。在success()回调函数中,只需循环遍历json结果即可获得相关数据。

    function LoadProductos() {
        $.ajax({
            url: '../../class/loadProd.php',
            method: 'POST',
            dataType: 'json',
            success: function (data) {
                for (var i = 0; i < data.length; i++) {
                    alert(data[i].Name);
                }
            }
        });
    }
    

答案 1 :(得分:2)

首先,您不应该回显循环中的json数据。它应该在外面循环。 您也不应该构建自己的json数据。

让我们构建一个看起来像你想要的json响应的数组。然后我们将使用函数json_encode()将其编码为正确的json-string:

// Define the response array
$response = [
    'data' => []
];

while($row = mysqli_fetch_array($registros)) {

    // Push a new array to 'data' array
    $response['data'][] = [
        'IdProduct'   => $row['IdProduct'],
        'Name'        =>.$row['Name'],
        'Description' => $row['Description'],
        'ImagePath'   => $row['ImagePath']
    ];
}

// Now, let's encode the data:
echo json_encode($response);

答案 2 :(得分:0)

在你的PHP文件中根据这个做出改变: -

$outp = array();
$outp = $res->fetch_all(MYSQLI_ASSOC);

为确保json_encode不返回null

function utf8ize($d) {
 if (is_array($d)) {
    foreach ($d as $k => $v) {
        $d[$k] = utf8ize($v);
    }
} else if (is_string ($d)) {
    return utf8_encode($d);
}
return $d;
}
echo json_encode(utf8ize($outp));

你的JavaScript是可以的你只需要在PHP中更改代码。