Json响应angularjs无法正常工作

时间:2015-02-19 02:23:45

标签: javascript php json angularjs joomla

我是angularjs的新手,由于某些原因,当json来自joomla组件时,angularjs不会在页面上加载任何数据。

当我从getcustomers.php文件获取数据时,Angularjs工作,该文件位于站点的根目录中,但是当json数据来自joomla组件时则不然。 (http://localhost/testsite/index.php?option=com_helloworld&view=helloworld&format=raw)。

我可以看到json正在加载(直接点击了urc,getcustomers.php和joomla组件也可以在页面加载时在chrome开发人员工具中看到。)

两个json响应的唯一区别,我可以看到双括号[{"Id":87,"EANHotelID": }](工作Json示例),而不工作的json示例是[[{"Id":87,"EANHotelID":}]]

Angularjs控制器如下:(工作和不工作之间的唯一区别是下面的HTTP.GET:

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

app.filter('startFrom', function() {
    return function(input, start) {
        if(input) {
            start = +start; //parse to int
            return input.slice(start);
        }
        return [];
    }
});
app.controller('customersCrtl', function ($scope, $http, $timeout) {
    $http.get('testsite/index.php?option=com_helloworld&view=helloworld&format=raw').success(function(data){
        $scope.list = data;
        $scope.currentPage = 1; //current page
        $scope.entryLimit = 10; //max no of items to display in a page
        $scope.filteredItems = $scope.list.length; //Initially for no filter  
        $scope.totalItems = $scope.list.length;
    });
    $scope.setPage = function(pageNo) {
        $scope.currentPage = pageNo;
    };
    $scope.filter = function() {
        $timeout(function() { 
            $scope.filteredItems = $scope.filtered.length;
        }, 10);
    };
    $scope.sort_by = function(predicate) {
        $scope.predicate = predicate;
        $scope.reverse = !$scope.reverse;
    };
});

希望你能提供帮助。

1 个答案:

答案 0 :(得分:0)

有几件事:

  1. 提取的JSON无效。您应该为" EANHotelID"分配一个值。如果没有值,则为null,如null。它看起来像这样:

    [{" Id":87," EANHotelID":null}]

  2. 第二个不起作用的响应是一个内部有数组的数组。要访问您正在执行的数据,您必须更改$ http.get成功函数中的第一行:

  3. $ scope.list = data;

    $ scope.list = data [0];

    最好在没有额外数组包装的情况下发送响应,因为你不需要它。