I am trying to fill a dropdown using Ajax and PHP with JQuery. For some reason, I always get a Parse JSON Error.
JS file
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!!
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.
Parsing JSON Request failed.');
} else if (e == 'timeout') {
alert('Request Time out.');
} else {
alert('Unknown Error.
' + x.responseText);
}
}
});
}
get_all_roles.php
$roleDaoImpl = new RoleDaoImpl($pdo);
$roleDaoImpl->getAllRoles();
Implementation of 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());
}
}
And when I tried to echo what's return by json_encode($roleList);
I get the ff:
["",{"roleId":1,"roleName":"Administrator"},{"roleId":2,"roleName":"Teacher"},{"roleId":3,"roleName":"Student"}]
What is the correct way to parse the php object array return by php?
Thank you.