【发布时间】:2013-12-04 17:09:59
【问题描述】:
我正在使用 Angular,但同样的事情发生在普通的 jQuery Ajax 请求中,以获取数据。
数据结构为:
{
"providers":
{
"complete":[1,2,3],
"inProgress":[4,5,6]
},
"results":
[
{"thing":{"id":"1234"},"somethingelse":null},
{"thing":{"id":"5678"},"somethingelse":null}
]
}
Ajax 请求如下所示:
$.ajax({
dataType: 'jsonp',
headers: {'cache-control': 'no-cache'},
url: $resultsURL
}).done(function(data) {
和 Angular 请求:
$http.jsonp($resultsURL)
.success(function(data, status){
现在,如果没有演示,有点难以解释,遗憾的是我无法公开任何 api 端点,但上述工作正常,正如预期的那样,并告诉我我有两个结果。
现在真正的问题是,如果我尝试 console.log(data.results),我可以将部分请求附加到 url 并返回一个较小的数据集,带有偏移量等,如果我尝试 console.log(data.results) 我得到一个空的 []。如果我尝试 data.results.length,它会返回 0。
欣赏这可能没有多大意义,所以我想首先要解决的是为什么 ajax 可能会将 data.results 的长度返回为零?
我是否遗漏了一些非常明显的东西?
干杯
【问题讨论】:
-
$resultsURL的值是多少? -
按照 var $resultsURL = $settings.api + '/results/' + $scope.enquiryId + '?partialfrom=' + $scope.partialFrom + '&partiallimit=' + $scope .partialLimit + '&callback=JSON_CALLBACK';
-
您是否尝试过使用开发者工具或萤火虫来查看网络窗口中的响应是什么?
-
是的,它看起来不错。当我在新选项卡中打开响应时,会有很多结果。
-
好吧,既然您不能公开 API,您能否获取 JSON 响应并创建一个 plunker 或 jsfiddle,它只向包含您的响应数据的 .JSON 文件发出 JSONP 请求。如果没有一些问题示例,将很难排除故障。