使用$ .getJSON以正确的格式从php返回带有emberjs的json数据

时间:2013-11-05 14:14:58

标签: jquery ajax json ember.js jsonp

我看了这个tutorial

并尝试创建自己的php端脚本以生成json数据。

但是,我创建了一个多级数组失败了。

在示例中,json结果为

{
  "nextId": null,
  "items": [{
          "title": "Docker, the Linux container runtime: now open-source",
          "url": "http://docker.io",
          "id": 5445387,
          "commentCount": 39,
          "points": 146,
          "postedAgo": "2 hours ago",
          "postedBy": "shykes"
      }, {
          "title": "What\u0027s Actually Wrong with Yahoo\u0027s Purchase of Summly",
          "url": "http://hackingdistributed.com/2013/03/26/summly/",
          "id": 5445159,
          "commentCount": 99,
          "points": 133,
          "postedAgo": "2 hours ago",
          "postedBy": "hoonose"
      },
  ],
  "version": "1.0",
  "cachedOnUTC": "\/Date(1364333188244)\/"
}

已生成,我可以使用$resultJSON= json_encode($resultArray);生成内部关卡,即title,url,id等,但不是'items'对象。我想知道,items对象是否来自表名,还是通过编码生成的数组数组来创建的? 我使用从这个php文件编码为json的数据:

$query = "SELECT user_id, username, legacy_id, date_created
FROM eq_user";
$result = mysqli_query($connection, $query);
$numRows = mysqli_num_rows($result);
$resultArray = mysqli_fetch_assoc($result);
$resultJSON= json_encode($resultArray);
echo $resultJSON;

emberjs应用程序就像

App.Item.reopenClass({
  all: function() {
      return $.getJSON("/get_data.php").then(function(response) {
        var items = [];                     
        response.items.forEach( function (item) {
          items.push( App.Item.create(item) );
        });

          return items;
      });
  }
});

注意:项目是我认为的对象,但我不知道如何在php中正确生成json数据作为多级数组。

另外,还有一个问题,我应该使用json_encode吗?因为我看到教程提到Emberjs使用jsonp ...它是一种特殊的格式吗?我该如何在PHP中使用这个jsonp?

谢谢!

1 个答案:

答案 0 :(得分:2)

你可以简单地做

 $resultArray = array();
 while ($row = mysqli_fetch_assoc($result)) {
    $resultArray[] = $row;
 }

 $resultJSON= json_encode(array("items"=>$resultArray));
祝你好运