我有一个jquery ajax函数来检索汽车品牌。
在服务器端,查询是按品牌名称排序的。
但是当涉及到jquery时,列表是按id排序的。
如何按名称而不是按ID排序到jQuery?
维护服务器端订购吗?
var $optionsBrand = $("#BrandId").html($("<option />").val('').text('select one'));
if($response) {
$optionsBrand.prop("disabled", false);
$.each($response, function(id, value){
var $opt = new Option(value, id);
$optionsBrand.append($opt);
});
}
从服务器端,我的SQL查询以这种方式返回列表:
4-BMW
3-FORD
2-KIA
5-Nissan
1-Volkswagen
Jquery端重新排序为这种方式:
1-Volkswagen
2-KIA
3-FORD
4-BMW
5-Nissan
如何按名称维护服务器端订购?
答案 0 :(得分:1)
您可以通过JS做类似的事情
$optionsBrand.sort(function (a, b) {
if (a.name > b.name) {
return 1;
}else if (a.name < b.name) {
return -1;
}
return 0;
});
答案 1 :(得分:1)
由于接收到对象,因此需要将其映射到数组并再次对其进行排序。理想的是从服务器发送一个数组,而不是因为数组保证顺序,对象却不发送
var $response ={1: "Volkswagen", 2: "KIA", 3: "FORD", 4: "BMW", 5: "Nissan"}
var sorted = Object.keys($response).map(function(key){
return {id: key, name: $response[key]};
}).sort(function(a,b){
return a.name.localeCompare(b.name);
});
console.log(sorted)