3

我一直在尝试做的是使用 angular.js 的 $http 服务从服务器获取数据,然后使用 ng-repeat 指令在我的模板中使用返回的数据。但问题是获取的数据根本没有显示,并且 ng-repeat 指令生成的数据行就像一个数字行,除了它应该生成的行。我正在使用 PHP 来呈现数据。这是javascript部分:

    function display($scope, $http){
      $scope.s= "?s=Spice";
      $http({method: "GET", url: "getlistangular.php"+$scope.s}).
       success(function(data){
        alert("success");
        $scope.list= data;
       }).
       error(function(){
        alert("failed");
           });
     }

这是 php 中的脚本(spname、spprice、imgsrc 是 mysql 'spice' 表中的列名):

    $t = $_GET['s'];
    $query= mysql_query("select * from $t");

    echo "[";
    while ($row = mysql_fetch_array($query))
    {
    echo "{img:'".$row[imgsrc]."', name:'".$row[spname]."', price:'".$row[spprice]."'},\n";
    }
    echo "];";

&这是模板部分:

    <table ng-controller="display">

                <tr>
                    <th> </th> <th> Name </th> <th> Price (Rs.) </th>
                </tr>
                <tr ng-repeat="con in list">
                    <td><input type="checkbox" class="regular-checkbox" value={{con.name}}><img src="{{con.img}}"/></td>
                    <td>{{con.name}}</td>
                    <td>{{con.price}}</td>
                </tr>

            </table>

我对这个 angular.js 东西很陌生,所以如果你觉得这是一个愚蠢的问题,我对此表示歉意。

提前致谢!

4

2 回答 2

2

Javascript应该是这样的:

var app = angular.module('myApp', []);

app.controller('displayCtrl', function($scope, $http) {
   $scope.s= "?s=Spice";
  $http({method: "GET", url: "getlistangular.php"+$scope.s, isArray: true}) //change here
    .success(function(response){
       alert("success");
       $scope.list= response; //change here
    })
    .error(function(){
       alert("failed");
    });
 });

HTML部分:

<table ng-controller="display">

替换为:

<table  ng-controller="displayCtrl">

 <html>

替换为

    <html ng-app="myApp">

在此处查看演示

于 2013-09-22T10:58:52.947 回答
1

问题基本上出在 php 部分。解决方案是以 key:value 格式返回一个 json 数组,而不是使用 echo 创建它:

    echo "[";
while ($row = mysql_fetch_array($query))
{
echo "{img:'".$row[imgsrc]."', name:'".$row[spname]."', price:'".$row[spprice]."'},\n";
}
echo "];";

应替换为:

    $arr = array();
while ($row = mysql_fetch_array($query))
{
$arr[] = array( 'img' => $row['imgsrc'], 'name' => $row['spname'], 'price' => $row['spprice'] );
}

echo json_encode(array('data' => $arr));
于 2013-09-23T04:51:11.890 回答