$ http服务没有返回控制器

时间:2014-11-30 12:15:30

标签: javascript angularjs

我尝试使用$ http回调获取json结果,下面是我的服务:

app.factory('topicContent', ['$http', function($http){

    var query = function() {
      return $http({
        method: 'JSONP',
        url: 'http://daysof.me/lowyat/thread.php?callback=JSON_CALLBACK'
      });
    }

    return {
        request : function(){
            return query();
        }


    }
}]);

在我的控制器中我喜欢这个

  topicContent.request().success(function(data){
    $scope.threadContent = data.data;
  });

但为什么我的threadContent什么都没有返回?

3 个答案:

答案 0 :(得分:1)

如果你使用data(在success的情况下你必须这样做),你似乎不需要阅读响应对象的then属性。它应该是:

topicContent.request().success(function(data){
    $scope.threadContent = data;
});

答案 1 :(得分:1)

问题在于,您的网址不会返回JSON

内容类型为text/html,而应为application/json

尝试使用以下任何其他JSONP支持的网址切换您的网址,这样就可以了。

https://api.github.com/gists

如果您查看Chrome开发者工具控制台,则可以看到该消息。

Resource interpreted as Script but transferred with MIME type text/html

您需要将服务器配置为使用

发送JavaScript响应
Content-Type: application/javascript or application/json

答案 2 :(得分:0)

PHP

public function getData()
{
    header("Content-Type: text/javascript");
    // or try header("Content-Type: application/json");
    $data = array();
    echo $_GET["callback"] . "(" . json_encode($data) . ")";
    // or try $_GET["url"]["callback"] . "(" . json_encode($data) . ")";
}

的JavaScript

var url = ".../getData?callback=JSON_CALLBACK";
$http.jsonp(url).success(function(data) {
});

这是一篇关于AngularJS和AJAX的好文章,详细介绍了AngularJS和JSONP http://tutorials.jenkov.com/angularjs/ajax.html