【发布时间】:2014-05-28 22:17:10
【问题描述】:
我有一个调用 ASP.NET Web API 的 jQuery 函数。我知道 API 成功返回了一个客户端对象,因为我可以直接输入 API url 并且对象信息在浏览器中以 XML 格式显示。 JSON 数据作为集合返回,jQuery 循环遍历 <option> 元素并将其附加到 <select> 元素。
我遇到的问题是如何使用 jQuery 来显示结果。 jQuery 可以很好地显示一组对象,但是如果只返回一个对象,它会为 <option> 元素显示“未定义”。
function searchClients() {
var uri = 'api/clients';
var searchParam = $('#SearchTerm').val();
$.getJSON(uri + '/' + searchParam)
.done(function (data) {
$('#selSearchResults').show(); // Displays hidden select element
$('#selSearchResults').html(""); // Clear any pre-existing data in select element
$.each(data, function (key, item) {
$('#selSearchResults')
.append('<option value="' + key + '">' + item.OrgName + ' - ' + item.ID + '</option>');
})
})
.fail(function (jqXHR, textStatus, err) {
$('#ErrorMessage').text('Error: ' + err);
});
}
如果.each 函数接收到data 的单个对象,是否会返回未定义?如果是这样,如何解释可能包含单个对象或仅包含一个对象的结果?我认为.each 会解决这个问题。
【问题讨论】:
-
然后先检查返回的
data是集合还是单个对象。 -
或者更确切地说,确保您请求数据的端点始终提供一个数组/对象,而不仅仅是一个值——行为应该是一致的。
-
您确定
data[1].item.OrgName有价值吗?在我看来OrgName和ID是undefined -
@WereWolf @CBroe@ -
.each不会迭代单个对象吗?在迭代之前是否总是需要检查结果对象集合是否有一个或多个成员?我希望在示例中看到更多这一点,因为查询不知道可能返回多少结果。