如何从jQuery Ajax请求一组PHP对象?

时间:2014-09-03 00:10:32

标签: php jquery ajax

我想通过一系列" 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);
        }
      });
    }
  });

2 个答案:

答案 0 :(得分:0)

来自php.net docs

  

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);

谢谢!

这有很多帮助How to return an array from an AJAX call?