У меня есть раскрывающееся меню множественного выбора. Когда пользователь выбирает значения, запрос jquery / ajax должен быть отправлен на сервер. Вот пример моего кода:
$("#send").on("click", function() {
var elem$ = $("#cars"),
elemVal = elem$.val();
console.log(elemVal);
if (elemVal) {
$.ajax({
type: 'POST',
url: 'requestTest.html?fn=saveCar',
data: {'cars': elemVal},
dataType: 'json'
}).done(function(obj) {
console.log(obj);
}).fail(function(jqXHR, textStatus, errorThrown) {
alert("An error has occured.");
});
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="cars" id="cars" multiple>
<option value="">--Select Car--</option>
<option value="volvo">Volvo</option>
<option value="saab">Saab</option>
<option value="opel">Opel</option>
<option value="audi">Audi</option>
</select>
<button type="button" name="send" id="send">Send</button>
Код Ajax-вызов вернул ошибку. Он говорил мне, что в моей функции требуется элемент cars, но он не передается. Я проверил инструменты разработчика и вот что я нашел в Params:
{"cars[]":["volvo","saab"]}
Похоже, данные не структурированы должным образом. Мне интересно, что заставляет cars
получить массив впереди? Каков наилучший способ решить эту проблему? Спасибо.