При отправке множественного выбора значения JQuery / AJAX данные неверны? - PullRequest
1 голос
/ 30 октября 2019

У меня есть раскрывающееся меню множественного выбора. Когда пользователь выбирает значения, запрос 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 получить массив впереди? Каков наилучший способ решить эту проблему? Спасибо.

1 Ответ

0 голосов
/ 30 октября 2019

С этим кодом будет работать лучше:

<script type="text/javascript">

    $("#send").on("click", function() {
      var elem$ = $("#cars").val();
        //elemVal = elem$.val();
      console.log(elem$);
      if (elem$) {
        $.ajax({
          type: 'POST',
          url: 'requestTest.html?fn=saveCar',
          data: {'cars': elem$},
          dataType: 'json'
        }).done(function(obj) {
          console.log(obj);
        }).fail(function(jqXHR, textStatus, errorThrown) {
          alert("An error has occured.");
        });
      }
    });
    </script>

Это даст вам массив, этим массивом вы можете управлять им с php: Образ моей консоли с этим кодом

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...