繁体   English   中英

使用PHP和AJAX从表中加载数据

[英]Load data from table using PHP & AJAX

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

{数据:[{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.']}';
}

您需要在代码中进行几项更改,例如:

  • 那不是您应该创建json字符串的方式。 while()循环之前创建一个空数组,并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); } } }); } 

首先,您不应该循环中回显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);

在您的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中的代码即可。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM