我想用Ajax传递一个"块"数组。我用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);
}
});
}
});
从php.net文档
JSON标准只支持嵌套在数组或对象中的这些值。
json_encode
将对象中的变量转换为JSON变量,因此如果将名称和编号保存在BlockEntity
对象中,它们就会显示出来。
在响应的帮助下,如果将来有人遇到同样的问题,您应该:
使用参数数据类型"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);
谢谢!
这对如何从AJAX调用中返回数组有很大帮助?