如何从jQueryAjax请求一组PHP对象


How to request an array of PHP objects from jQuery Ajax?

我想用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调用中返回数组有很大帮助?