php - Ajax 调用返回一个空对象数组
问题描述
我正在使用 php 的 OOP,正在从数据库中获取数据。数据提取得很好,但是当我进行 ajax 调用时,它返回一个空对象数组。如何让对象返回数据
在 json_encoding 之前获取数据库结果
Array ( [0] => CategoryModel Object ( [id:CategoryModel:private] => 1 [code:CategoryModel:private] => cat001 [name:CategoryModel:private] => laptop [date:CategoryModel:private] => 2018-11-05 15:33:21 [owner:CategoryModel:private] => OwnerModel Object ( [companyName:OwnerModel:private] => [id:PersonModel:private] => 1 [code:PersonModel:private] => [firstname:PersonModel:private] => [lastname:PersonModel:private] => [username:PersonModel:private] => [email:PersonModel:private] => [password:PersonModel:private] => [date:PersonModel:private] => [mobile:PersonModel:private] => [fullname:PersonModel:private] => Galiwango Fahad [account_type:PersonModel:private] => ) [status:CategoryModel:private] => 0 ) [1] => CategoryModel Object ( [id:CategoryModel:private] => 2 [code:CategoryModel:private] => cat002 [name:CategoryModel:private] => pen [date:CategoryModel:private] => 2018-11-05 16:05:29 [owner:CategoryModel:private] => OwnerModel Object ( [companyName:OwnerModel:private] => [id:PersonModel:private] => 1 [code:PersonModel:private] => [firstname:PersonModel:private] => [lastname:PersonModel:private] => [username:PersonModel:private] => [email:PersonModel:private] => [password:PersonModel:private] => [date:PersonModel:private] => [mobile:PersonModel:private] => [fullname:PersonModel:private] => Galiwango Fahad [account_type:PersonModel:private] => ) [status:CategoryModel:private] => 0 ) )
检索和编码数据的php代码
<?php
require_once("../services/CategoryService.php");
$categoryService = new CategoryService();
$categoryArray = $categoryService->selectAllCategoryDetails();
if(count($categoryArray)>0){
// echo print_r($categoryArray);
echo json_encode($categoryArray);
}else{
echo 0;
}
?>
javascript
$.ajax({
type: "POST",
url: ".././com.flex_audit/controllers/fetchAllCategoriesController.php",
data: "",
success: function (responseData) {
if(responseData!=0){
var categoryObjArr = JSON.parse(responseData);
console.log(categoryObjArr);
console.log(categoryObjArr[0]);
console.log(categoryObjArr[0]["id"]);
}else{
$("#alertMessage").text(" categories not found ");
}
// console.log(responseData);
}
,
error:function(error){
alert("an error occured "+error);
}
});
});
控制台结果
(2) [{…}, {…}]
{}
undefined
为什么响应返回空对象
解决方案
因为对象的所有属性都是私有的 *它在将类属性设为公共而不是私有后才起作用 *
从
private $id,$code,$name,$date,$owner,$status;
至
public $id,$code,$name,$date,$owner,$status;
推荐阅读
- html - 如何在移相器中自动播放视频?
- sql - 使用 4 个表的 SQL MAX 查询
- c# - 使用 Ghostscript 快速栅格化部分 PDF
- c# - 使用 Where 的 SelectMany 查询会产生许多 SQL 查询
- javascript - 无法将 babel-preset-es2015 更新为 babel-preset-env
- linux - 获取最新的匹配字符串值
- javascript - 在运行控制器之前 Ajax 调用陷入错误
- r - 如何在 R 中使用自定义元保存 TM VCorpus
- sql - SQL - 排序后,仅返回列中具有某些连续值的行
- javascript - 对 JavaScript 的 PHP cURL 请求