如何格式化与AngularJS';一起使用的PHP数组;ng重复指令


How do I format a PHP array for use with AngularJS' ng-repeat directive?

我有一个要使用ng-repeat填充的表。我很难弄清楚如何格式化数组以使其正常工作。以下是我目前所拥有的:

PHP(customers.PHP):

$customer_array = array();
$customer1 = array(
  'customer_id' => '1',
  'name' => 'John Doe',
  'city' => 'New York'
);
$customer_array[] = $customer1;
$customer2 = array(
  'customer_id' => '2',
  'name' => 'Jane Doe',
  'city' => 'Boston'
);
$customer_array[] = $customer2;
echo($customer_array);

AngularJS控制器(CustomersCtrl.js):

$http({
    url: 'customers.php',
    method: "POST"
})
.success(function (data, status) {
    $scope.customers = data;
})
.error(function (data, status) {
    $scope.status = status;
});

HTML:

<table>
<tbody ng-controller="CustomersCtrl">
    <tr ng-repeat="customer in customers">
        <td>{{customer.customer_id}}</td>
        <td>{{customer.name}}</td>
        <td>{{customer.city}}</td>
    </tr>
</tbody>
</table>

这不起作用。我做错了什么?

更新:我想知道这是否是因为我使用下面的代码从上面加载HTML代码:

$routeProvider.when('/customers.php', {
    templateUrl: 'partials/customers.html',
    controller: 'CustomersCtrl'
});

是因为新加载的html模板在尝试执行ng-repeat循环之前没有绑定到控制器吗?

在发送响应之前,您需要对数组进行JSON编码。

echo json_encode($customer_array);

这将为您的javascript代码提供一些可供使用的东西。现在,唯一传递回javascript的是单词"Array",它不会做任何事情。

如果任何主体都有类似的问题,请检查JSON响应中是否有BOM标记。

什么是BOM?

你可以在wiki 上找到

如何检查您的回复中是否有BOM?

  1. 在chrome中打开开发人员工具并进入网络
  2. 找到你的响应文件(如果你没有htaccess重写,可以像file.php一样),然后点击它
  3. 共有5个选项卡,其中一个是响应。如果BOM标记在那里,你会看到一个红点

如果你找到红嘟嘟怎么办?

在utf-8widouthBOM中对文件进行编码。在记事本++中,您可以在"编码"选项卡中选择。

PS:我的英语很糟糕,我知道:p