@WebforSelf

Как можно исключить из serialize данные?

Есть скрипт на ajax на сайте ТЫЦ файл называется ajax_cart.js

// Аяксовая корзина (добавление варианта)
$(document).on("submit", "form.variants", function (e) {
	e.preventDefault();

	vars = $(this).serialize();		
    console.log(vars);
	$.ajax({
	url: "ajax/cart.php",
	data: vars,
	dataType:'json',
	success:function(data){ 
		$('#cart_informer').html(data.desktop);
		$('#cart_informer_main').html(data.main);
        $('#cart_informer_mini').html(data.mini);
		$('#cart_informer_mobile').html(data.mobile);
		$.fancybox.close();
        } 
      });  
});


Который обрабатывает собранный с формы serialize

<form>
<input id="product_preview183" name="variant" value="183" type="radio" class="sytle-input" checked="">

<input class="amounts incr__val" name="add_variant[107]" type="text" value="0">
<input class="amounts incr__val" name="add_variant[108]" type="text" value="2">

<button type="submit" value="">Добавить</button>

</form>


variant=183&add_variant%5B107%5D=0&add_variant%5B108%5D=2

КАк можно передать так чтоб с нулевым значением serialize не собирало в итоге чтоб

variant=183&add_variant%5B108%5D=2 - было так и соответственно добавляя значение value он отправлял только те что >0
  • Вопрос задан
  • 38 просмотров
Решения вопроса 1
Tim-A-2020
@Tim-A-2020 Куратор тега JavaScript
как вариант
<form>
  <input id="product_preview183" name="variant" value="183" type="radio" class="sytle-input" checked="">

  <input class="amounts incr__val" name="add_variant[107]" type="text" value="0">
  <input class="amounts incr__val" name="add_variant[108]" type="text" value="2">

  <button type="submit" value="">Добавить</button>

</form>

let form = $('form');
let data = form.serializeArray().filter(item => +item.value);//фильтрация подойдет если в value будут цифры, иначе поменять нужно условие
console.log(data );
/*
[
{name: "variant", value: "183"},
{name: "add_variant[108]", value: "2"}
]
*/
// после data передаем в аякс
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Intspirit Краснодар
от 80 000 до 150 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽