[英]Correct way to parse php object array for Ajax
我正在嘗試將Ajax和PHP與JQuery一起填充下拉列表。 出於某種原因,我總是會收到“解析JSON錯誤”。
JS文件
function loadRolesToDropDown() {
var url = 'controller/get_all_roles.php';
$.ajax({
url: url,
type: 'GET',
dataType: 'JSON',
success: function (data) {
var len = data.length;
$("#roledropdown").empty();
for (var i = 0; i < len; i++) {
var roleId = data[i]['roleId'];
var roleName = data[i]['roleName'];
$("#roledropdown").append("<option value='" + roleId + "'>" + roleName + "</option>");
}
},
error: function (x, e) {
if (x.status == 0) {
alert('You are offline!!\n Please Check Your Network.');
} else if (x.status == 404) {
alert('Requested URL not found.');
} else if (x.status == 500) {
alert('Internal Server Error.');
} else if (e == 'parsererror') {
alert('Error.\nParsing JSON Request failed.');
} else if (e == 'timeout') {
alert('Request Time out.');
} else {
alert('Unknown Error.\n' + x.responseText);
}
}
});
}
get_all_roles.php
$roleDaoImpl = new RoleDaoImpl($pdo);
$roleDaoImpl->getAllRoles();
getAllRoles()
function getAllRoles()
{
$roleList[] = "";
try {
$SQL = "CALL getAllRoles()";
$sp_getAllRoles = $this->connection->prepare($SQL);
$sp_getAllRoles->execute();
$resultSet = $sp_getAllRoles->fetchAll(PDO::FETCH_ASSOC);
foreach ($resultSet as $row) {
$roleId = $row['role_id'];
$roleName = $row['role_name'];
$roleList[] = array("roleId" => $roleId, "roleName" => $roleName);
}
echo json_encode($roleList);
} catch (PDOException $e) {
die($e->getMessage());
}
}
當我嘗試回顯json_encode($roleList);
返回的內容時json_encode($roleList);
我得到了ff:
["",{"roleId":1,"roleName":"Administrator"},{"roleId":2,"roleName":"Teacher"},{"roleId":3,"roleName":"Student"}]
解析php返回的php對象數組的正確方法是什么?
謝謝。
在您的php函數中,getAllRoles
function getAllRoles()
{
$roleList[] = ""; // -> should be $roleList = [];
In your get_all_roles.php if you are getting such type of result from query then this code will work
$resultSet = array(0=>array('role_id'=>1,'role_name'=>'Administrator'),1=>array('role_id'=>2,'role_name'=>'Teacher'),2=>array('role_id'=>3,'role_name'=>'Student'));
foreach ($resultSet as $row) {
$roleId = $row['role_id'];
$roleName = $row['role_name'];
$roleList[] = array("roleId" => $roleId, "roleName" => $roleName);
}
echo json_encode($roleList);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.