Javascript真的不是我的力量,事实上我对它很可怕,所以刚刚开始掌握它。
我使用GET对API进行了AJAX调用。 API返回标准JSON。
如果我没有提供身份证,我的回复就是所有记录。如果我提供ID,我会收到一个单一记录响应。这是正确的。
这是我的代码:
$.ajax({
url: apiURL,
dataType: "json",
type: "Get",
success: function (data) {
var row;
for (var i = 0; i < data.length; i++) {
row = row + "<tr>";
row = row + "<td>" + data[i].id + "</td>";
row = row + "<td>" + data[i].latitude + "</td>";
row = row + "<td>" + data[i].longitude + "</td>";
row = row + "<td>" + data[i].description + "</td>";
row = row + "<td>" + data[i].dateRecorded + "</td>";
row = row + "</tr>";
};
$("#results").append(row);
......
如你所见,我想把结果拿出来放在桌子上。当我的响应是多个记录时,这很有效,但如果我的响应是单个记录,则会得到一个OBJECT而不是ARRAY,代码在data.length
处失败。为什么我没有一个带有单个元素的ARRAY,我该怎么办呢?
我将不胜感激任何帮助。
答案 0 :(得分:5)
为什么我没有使用单个元素的ARRAY
因为这是您正在使用的API的作者的设计决定。
我该怎么办呢?
测试看看你得到了什么。如果它不是已存在的数组,请将其放入数组中。
if (! (data instanceof Array) ) {
data = [data];
}
答案 1 :(得分:0)
试试这个:
success: function (data) {
if( !data.length ) data = [ data ];
...
}
这将检查返回的值是否是单个对象。如果它是一个好的API,它总会返回一个数组,但是因为它不是你必须自己检查。
是的,有更好的方法来检查数据是否是一个数组,如@Quentin
的答案
!(data instanceof Array)