удалить кавычки из массива jquery - PullRequest
0 голосов
/ 03 ноября 2019

В своей функции я ищу с помощью jquery все элементы карусели сов и беру из идентификатора только доступные номера. Потому что мне нужны только идентификационные номера предметов. Я посылаю идентификационные номера через ajax на свой php-контроллер для дальнейшей обработки.

var slideArray = $('#categoryInterestCarousel_' + categoryIdOld).find('.interestOwl');

//Step 1: initialize the array
var previewIds = [];

//Step 2: Search for all IDs and add only the id to the array
$(function() {
  $(slideArray).each(function(index) {
    previewIds[index] = $(this).attr('id').replace(/\D/g, '');
  });
});

В качестве вывода я получаю следующий массив:

array:3 [
  0 => "183"
  1 => "198"
  2 => "201"
]

Мне нужен массив без кавычек, которыйэто выглядит так:

array:3 [
  0 => 183
  1 => 198
  2 => 201
]

Отправка данных через ajax:

$.ajax({
  type: 'GET',
  url: '/categorie/owl/' + categoryIdOld,
  data: {
    previewIds: previewIds
  },
  success: function(data) {
    //add some data to view
  },
  error: function(xhqr, staus, message) {
    var response = JSON.parse(xhqr.responseText);
    var errors = response.errors;
    for (var error_key in errors) {
      var error = errors[error_key];
      _toastr_new(error, "top-full-width", "error", false, '.toastr-notify', 0);
    }
  }
});

получение данных на контроллере:

public function ajaxOwlItems(Request $request, $id) {
  $preview_id = $request->previewIds;
  dd($request->previewIds);
}

Где моя ошибка? Как я могу удалить кавычки?

Ответы [ 2 ]

0 голосов
/ 03 ноября 2019

Вот так - вам нужно привести строку к числу - я использую +

Я позволил себе упростить код - например, нет необходимости использовать $(slideArray), так как он ужеКоллекция jQuery.

let categoryIdOld =3;
const previewIds = $('#categoryInterestCarousel_' + categoryIdOld)
 .find('.interestOwl')
 .map(function() { return +this.id.replace(/\D/g, ''); })
 .get();

console.log(previewIds);
console.log(JSON.stringify(previewIds)); // still numeric
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="categoryInterestCarousel_3">
  <span class="interestOwl" id="x183"></span>
  <span class="somethingElse" id="x999"></span>
  <span class="interestOwl" id="x198"></span>
  <span class="interestOwl" id="x201"></span>
</div>
0 голосов
/ 03 ноября 2019

Просто добавьте parseInt() вокруг значения:

$(function() {
  $(slideArray).each(function(index) {
    previewIds[index] = parseInt($(this).attr('id').replace(/\D/g, ''), 10);
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...