从表中使用PHP和AJAX加载数据
我想从表中检索数据使用PHP和AJAX,此刻我能够显示我的查询以json格式的结果,我想要做的是选择例如我得到这个数组:从表中使用PHP和AJAX加载数据
{data:[{IdProduct:“1”,Name:“Name Here ..........”,...} ]}
比如我要选择唯一的名字,我试着这样做:
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()
循环前创建一个空数组,并在循环的每次迭代中将行详细信息追加到此数组中。在退出循环后,只需将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); } } }); }
我做了更改,但现在我没有得到任何类型的信息(来自echo json_encode)并且也没有错误消息 – User1899289003
@ User1899289003几件事情在这里调试,1)你是否调用了这个'LoadProductos()'函数? 2)在'success'回调函数中'alert(data)',看看你到了那里。 –
是的!我打电话给我的功能,并警告(数据),我也打开浏览器控制台,看看发生了什么,功能执行良好,但在预览/响应窗口没有什么,我改变回声json_encode($表)回声“你好”并正常工作。 – User1899289003
首先,你不应该呼应的JSON数据在循环。应该是以外的这个循环。 你不应该建立你自己的json数据。
让我们构建一个看起来像你想要的json响应的数组。然后,我们将使用功能json_encode()
将其编码为一个适当的JSON字符串:
// 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);
我也试过这个,但我从上面的答案得到错误。 – User1899289003
@ User1899289003检查您的服务器错误日志,看看它是否说了些什么。你正在运行什么PHP版本/操作系统? –
没有错误消息或日志,我使用PHP 5.6.30 – User1899289003
在你的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中更改代码。
您试图在返回时解析JSON数据,但您并未在PHP中创建vaild JSON数据。使用'json_encode()',不要尝试自己编写JSON代码。 –
不要建立你自己的json字符串。只需创建一个PHP数组并使用[json_encode()](http://php.net/manual/en/function.json-encode.php)对其进行编码。 –
最后两行($ table = ...和echo ...)应该在循环之后。 – colburton