Если вы должны делать все на стороне клиента, вы можете преобразовать и отсортировать исходный ответ
$.getJSON(url).done(models => {
const sorted = Object.entries(models).sort(([k1, v1], [k2, v2]) =>
v1.localeCompare(v2))
model.append(sorted.map(([value, text]) => $('<option>', { value, text })))
})
В противном случае я бы предложил исправить это в источнике, чтобы он возвращалсяболее полная модель данных.
Например, если у вас есть что-то вроде
$models = [
0 => '',
23 => 'Granta',
20 => 'Vesta SW Cross',
24 => 'Zetta'
];
Сопоставьте это с лучшей структурой данных, например,
$data = [];
foreach ($models as $value => $text) {
$data[] = ['value' => $value, 'text' => $text];
}
header('Content-type: application/json');
echo json_encode($data);
exit;
. строка JSON, такая как
[
{
"value": 0,
"text": ""
},
{
"value": 23,
"text": "Granta"
},
{
"value": 20,
"text": "Vesta SW Cross"
},
{
"value": 24,
"text": "Zetta"
}
]
, которая находится в порядке и содержит все необходимые данные
$.getJSON(url).done(models => {
model.append(models.map(props => $('<option>', props)))
})