簡體   English   中英

解析Ajax的php對象數組的正確方法

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM