0

我有一张要使用ng-repeat. 我无法弄清楚如何格式化我的数组以使其正常工作。这是我到目前为止所拥有的:

PHP(客户.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'
});

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

4

2 回答 2

0

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

什么是物料清单?

你可以在wiki上找到

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

  1. 在 chrome 中打开开发者工具并进入网络。
  2. 找到您的响应文件(如果您没有 htaccess 重写,则类似于 file.php)并单击它。
  3. 有 5 个选项卡,其中之一是响应。如果 BOM 标记在那里,您将在那里看到一个红点。

如果你发现红点怎么办?

用 utf-8 无 BOM 编码您的文件。在记事本++中,您可以在“编码”选项卡中选择。

PS:我的英语很烂,我知道:P

于 2014-07-13T17:28:23.160 回答
0

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

echo json_encode($customer_array);

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

于 2013-07-06T18:32:50.287 回答