Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery带有单个对象的每个循环返回“未定义”_Jquery_Json - Fatal编程技术网

jQuery带有单个对象的每个循环返回“未定义”

jQuery带有单个对象的每个循环返回“未定义”,jquery,json,Jquery,Json,我有一个jQuery函数,可以调用ASP.NET Web API。我知道API成功地返回了一个客户端对象,因为我可以直接输入API url,并且对象信息以XML格式显示在浏览器中。JSON数据作为集合返回,jQuery循环并将元素附加到元素中 我遇到的问题是如何使用jQuery显示结果。jQuery可以很好地显示对象的集合,但是如果只返回一个对象,它会为元素显示undefined 如果.each函数接收到单个数据对象,是否返回未定义?如果是这样,那么如何解释可能包含单个对象或仅包含一个对象的结果

我有一个jQuery函数,可以调用ASP.NET Web API。我知道API成功地返回了一个客户端对象,因为我可以直接输入API url,并且对象信息以XML格式显示在浏览器中。JSON数据作为集合返回,jQuery循环并将元素附加到元素中

我遇到的问题是如何使用jQuery显示结果。jQuery可以很好地显示对象的集合,但是如果只返回一个对象,它会为元素显示undefined


如果.each函数接收到单个数据对象,是否返回未定义?如果是这样,那么如何解释可能包含单个对象或仅包含一个对象的结果?我认为。每个都会解释这一点。

我坚信您的API出了问题。 检查是否确实发送了数组或对象,例如

确保您的数据如下所示: 风险值数据=[ {ID:01,OrgName:Organization1}, {ID:02,OrgName:Organization2}, {ID:03,组织名称:Organization3} ];


您可以在此处使用数据:

已解决!问题在于返回的是单个对象,当这种情况发生时,每个函数都会迭代对象的属性。解决方案是将单个对象包装到一个数组中,这样每个对象都能够正确地迭代。我在jQuery中添加了这一行

if (!jQuery.isArray(data)) data = [data]; // If a single object is returned, wrap it in an array
在这里,它是在整个功能

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
       if (!jQuery.isArray(data)) data = [data]; // If a single object is returned, wrap it in an array
       $.each(data, function (key, item) {
         $('#selSearchResults')
           .append('<option value="' + key + '">' + item.OrgName + ' - ' + item.ID + '</option>');
       })
     })
     .fail(function (jqXHR, textStatus, err) {
         $('#ErrorMessage').text('Error: ' + err);
     });
}

我从以下内容中找到了此问题的解决方案,并查看了中的答案。

然后首先检查返回的数据是集合还是单个对象。或者更确切地说,请确保请求数据的端点始终提供数组/对象,而且不仅仅是一个值–行为应该是一致的。您确定数据[1].item.OrgName具有值吗?在我看来,OrgName和ID是undefined@WereWolf@CBroe@-每个对象是否都会使用单个对象进行迭代?在遍历之前,是否总是必须检查结果对象集合是否有一个或多个成员?我希望在示例中看到更多,因为对于查询,人们不知道可以返回多少个结果。我可以确认,在这种情况下,API返回的是单个对象。我只是不明白为什么。即使集合中只有一个对象,每个对象也不会迭代一次。
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
       if (!jQuery.isArray(data)) data = [data]; // If a single object is returned, wrap it in an array
       $.each(data, function (key, item) {
         $('#selSearchResults')
           .append('<option value="' + key + '">' + item.OrgName + ' - ' + item.ID + '</option>');
       })
     })
     .fail(function (jqXHR, textStatus, err) {
         $('#ErrorMessage').text('Error: ' + err);
     });
}