2015-10-22 36 views
0

我有一个针对SharePoint的AJAX请求。它返回一个文件数组。我正在使用这些结果数组并向Select元素添加一系列选项。我希望能够通过Name属性按字母顺序对数组进行排序。我会如何去做这件事?我目前的Ajax调用是below.Thank你如何对AJAX请求以JSON格式返回的数据进行排序?

jQuery.ajax({ 
     url: url, 
     type: "GET", 
     headers: { 
      "accept": "application/json;odata=verbose", 
     }, 
     success: function (data) { 
      jQuery("#items").empty(); 
      jQuery("#items").prepend('<option value="-1">-Select Item-</option>').val('-1'); 
      jQuery.each(data.d.results, function (index, item) { 
       jQuery("#items").append('<option value="' + item.ServerRelativeUrl + '">' + item.Name + '</option>'); 
      }); 
      jQuery("#items").val(""); 
     }, 
     error: function() { 
      alert("Error getItems"); 
     } 
    }); 
}; 
+1

表明美国的例子返回结果的 –

+0

我们可以看到您的JSON结果请 – AdamJeffers

+0

每在SharePoint API的JSON的格式如下https://msdn.microsoft.com/EN-US/图书馆/办公室/ dn450841.aspx#bk_FileOData 特别是我的两个项目的格式如下: “名称”: “fileName.docx”, “ServerRelativeUrl”: “/共享文档/文件夹名/ fileName.docx”, – Phi

回答

0

如果我是你,我会使用类似的财产以后下划线

http://underscorejs.org/#sortBy

财产以后这样

var array = [ 
    { name: "banana" }, 
    { name: "carrot" }, 
    { name: "apple" } 
]; 

var sorted = _.sortBy(array,"name"); 

和传递数据。 d.阵列中的结果

希望它有帮助

+0

理想我'想避免Jquery和Sharepoint API以外的任何外部库的依赖关系 – Phi

+0

@Phil然后查看下划线源并获取所需内容。它是[这里](https://github.com/jashkenas/underscore/blob/master/underscore.js)和'sortBy'方法从第385行开始。 – Brian

1

你可以用javascript对数组进行排序,但不能让Sharepoint为你返回一个有序列表吗?似乎这将是一个有用的功能。无论如何,在javascript:

jQuery("#items").prepend('<option value="-1">-Select Item-</option>').val('-1'); 
var res = data.d.results.sort(function(a,b){ 
    if(a.Name < b.Name) return -1; 
    if(a.Name > b.Name) return 1; 
    return 0; 
}); 
jQuery.each(res, function (index, item) { 
    jQuery("#items").append('<option value="' + item.ServerRelativeUrl + '">' + item.Name + '</option>'); 
}); 
+0

雅,我觉得现在有点愚蠢。我一直专注于AJAX查询,我忘记了OData中的orderby参数。 :-D – Phi