我想通过一系列" Blocks"与Ajax。我创建了" Blocks"使用PHP类:我知道如何使用JSON传递带数字的数组,但我不知道如何传递带有对象的数组。
我是否必须在Javascript中重新创建一个模拟" Blocks"类然后传递每个值?
class RequirementsEntity {
public $num;
public $name;
function __construct($num, $field, $name, $desc, $bool) {
$this->num = $num;
$this->name = $name;
我的PHP代码:
$result = [];
while ($row = mysql_fetch_array($query)) {
$num = $row[0];
$name = $row[1];
$ablock = new BlockEntity($num, $name);
array_push($result, $arequirement);
}
echo json_encode($result);
我的jQuery代码:
$('#selProgram').on('change', function() {
var id = this.value;
if (id != "None") {
$.ajax({
type: "POST",
url: "assets/php/fetch_req.php",
data: "id="+id,
datatype: "json"
success: function(data) {
alert(data);
GenerateRequirements(data, 1);
}
});
}
});
答案 0 :(得分:0)
JSON标准仅在嵌套在数组或对象中时才支持这些值。
json_encode
将变量从对象转换为JSON变量,因此如果将名称和数字保存在它们将显示的BlockEntity
对象中。
答案 1 :(得分:0)
在回复的帮助下,如果将来有人遇到同样的问题,你应该:
使用参数data-type:" json"调用Ajax,并确保在收到数据后解析数据:
$('#selProgram').on('change', function() {
var id = this.value;
if (id != "None") {
$.ajax({
type: "POST",
url: "assets/php/fetch_req.php",
data: "id="+id,
datatype: "json",
success: function(data) {
JSON.parse(data)
}
});
}
});
此外,使用php发送时编码为JSON:
echo json_encode($result);
谢谢!