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