我尝试使用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.']}';
}
答案 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中更改代码。