Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Não estou conseguindo pegar o json

Alguém pode dar um help, estou tentando pegar o json em uma url que eu criei usando o wordpress, segue o meu codigo do angularjs : controller.js

angular.module('starter')
.controller('MenuCtrl', function($http, $scope){
    //alert('Hello');

    $scope.categorias = [];

    $http.get("http://localhost/udemywordpress/wordpress/api/get_category_index/").then(function(response){

        $scope.categorias = response.data;
        console.log(data);

    }, function(err){

        console.log(err);

    })
})

.controller('PostCtrl', function(){
    //alert('Hello');
})

segue uma imagem do meu json : http://imgur.com/a/AH6w0 ; nesse json esta mostrando que tem varias categorias , mas quando tento pegar as categorias usando o código a cima esta vindo o valor null.

6 respostas

Felipe, boa tarde!

No Chrome os dados já são apresentados de forma correta. Mas lembre-se que a resposta do protocolo HTTP sempre é uma string.

Ou seja, antes de manipular, você precisa fazer um parse.

$scope.categorias = JSON.parse(response.data);

ou

$scope.categorias = angular.fromJson(response.data);

O que acontece é que ficamos mal acostumados dos frameworks já fazerem tudo, e esquecemos que o HTTP não faz nenhum parse, a resposta sempre é uma string e precisamos fazer a conversão.

Seja automática pelo framwork, ou manual.

Não lembro de cabeça agora, se você precisa utilizar o response.data ou apenas response.

muito obrigado pela ajuda vou tentar colocar o angular.fromJson, eu estava tentando colocar responde.data seguindo o exemplo do curso do ionic que eu vi. eu me lembro que no curso uma parte ele faz o fromjson eu tinha me esquecido de testar isso muito obrigado pela ajuda. Vou testar o que voce sugeriu.

boa noite, Adriano

Eu coloquei o angular.fromJson que voce falo mas nao funciono continuo dando o mesmo erro.

Segue como fico o meu controller:

angular.module('starter')
.controller('MenuCtrl', function($http, $scope){
    //alert('Hello');

    $scope.categorias = [];

    $http.get("http://localhost/udemywordpress/wordpress/api/get_category_index/").then(function(response){

        $scope.categorias = angular.fromJson(response.data);
        console.log(data);

    }, function(err){

        console.log(err);

    })
})

.controller('PostCtrl', function(){
    //alert('Hello');
})

print do meu teste : http://imgur.com/a/oseGs

Na imagem ali está aparecendo um erro de CORS. Vc habilitou lá no seu backend?

solução!

Habilitei o cors no navegador e esta funcionando. Coloquei um plugin e funciono. Foi esse o plugin - > Allow-Control-Allow-Origin: coloquei ele no chrome. Segue print de como fico. http://imgur.com/a/aje3z

Muito obrigado pela ajuda, pessoal.