[英]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.