我通过product_id请求产品时间,我获得了所有产品时间的完整列表,而不是获得单个响应。
var productID = "37a94557-682f-4562-ba62-2448f80d3ddd" ;
$http({
url: "https://api.uber.com/v1/estimates/time" ,
headers: {
Authorization: "Token " + uberServerToken
},
params: {
start_latitude: setLat,
start_longitude: setLon,
product_id: productID
}
}).success(function(data, status, headers, config) {
uberTimes = data["times"] ;
uberTime = Math.round(uberTimes[0].estimate / 60) ;
}) ;
目前,我得到的回应是:
times: [{localized_display_name:uberX, estimate:455, display_name:uberX,…},…]
0: {localized_display_name:uberX, estimate:455, display_name:uberX,…}
display_name: "uberX"
estimate: 455
localized_display_name: "uberX"
product_id: "37a94557-682f-4562-ba62-2448f80d3ddd"
1: {localized_display_name:uberXL, estimate:455, display_name:uberXL,…}
display_name: "uberXL"
estimate: 455
localized_display_name: "uberXL"
product_id: "aa0109f3-15db-45ca-b0cc-5019e8557792"
1:我认为我只会获得单个产品时间信息,因为我使用了可选的“product_id”,为什么我会获得多个产品时间?
2:同样,假设我可以获得单个产品时间,我仍然会以同样的方式访问它:“uberTimes [0] .estimate”???
答案 0 :(得分:1)
product_id
可选参数未正确过滤结果。这是Uber API的一个已知错误。为了检索正确的estimate
,您应该处理JSON响应并按product_id
进行匹配,例如:
var myEstimate;
for result in results {
if result["product_id"] == product_id {
myEstimate = result["estimate"];
}
}
您不能只按0(在您的示例中为uberTimes[0].estimate
)进行索引,因为响应不保证结果的顺序。