我尝试使用$ 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什么都没有返回?
答案 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