Основная проблема заключается в том, что вы перебираете obj
, когда вместо этого вам нужно перебирать массив obj.data
.
Также обратите внимание, что вы можете использовать map()
для создания массивастроки, которые вы можете затем append()
один раз, чтобы сделать логику более краткой и более производительной.
Наконец, ваш код в настоящее время создает элемент option
с Firstname
в качестве текста элемента и Lastname
в качестве value
. Если вы хотите, чтобы текст был в формате Lastname, Firstname
, вам нужно явно установить для него текст. Попробуйте это:
var obj = {
"data": [{
"Lastname": "Roussel",
"Firstname": "Donald"
}, {
"Lastname": "Sabourin",
"Firstname": "Manon"
}, {
"Lastname": "Kelly",
"Firstname": "Bruce"
}]
}
var options = obj.data.map(function(item) {
return `<option>${item.Lastname}, ${item.Firstname}</option>`;
});
$('#select1').append(options);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="test"></div>
<form>
<select id="select1"></select>
</form>
Также обратите внимание, что JSON.parse()
не требуется, если вы установили dataType: 'json'
в запросе или используете $.getJSON()