@Vichovskiy
Изучаю программирование

Ajax возвращает один и тот же php запрос, как исправить?

Пишу интернет-магазин. Написал ajax запрос всё работает, но только для первого товара (это не связано с id, я делал через классы) и при нажатии кнопки второго товара возвращает информацию по первому. Подскажите, в чём может быть дело?
(Может дело в том, что надо перебирать forEach-ом?)
$(".add_card").on("click", function() {
let price = $(".price").val();
let count = $(".count").val();
let title = $(".title").val();

$.ajax({
    url: '/index.php', 
    method: 'get',
    cache: false,
    dataType: 'html',
    data: {price: price, count: count, title: title},
    success: function(data){
	     alert(data);
    }
});
}
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Может дело в том, что надо перебирать forEach-ом?
Нет. Надо изучить, что такое this в событиях jQuery.
Ответ написан
Rsa97 вам правильно сказал, что нужно делать через this

Я пробовал, не помогает

Покажите как вы пробовали... Не лишним будет увидеть вашу html часть.
Предполагаю, что элементы add_card, price, count, title находятся у вас на одном уровне вложенности. Тогда, чтобы к ним обратиться, нужно использовать такой код:

$(this).siblings(".price").val();

А в идеале для товаров нужно завести id и передавать его на бэк, а не непосредственно свойства товара. Уже в php по id товара вы кладете его в корзину.

Может дело в том, что надо перебирать forEach-ом?

Во-первых это неэффективный подход, во-вторых он вам здесь не поможет.
Ответ написан
RNSNS
@RNSNS
Symfony Backend developer
Мне кажется, что тут проблема с HTML
Если у тебя на странице:
<class=price>1</>
<class=price>2</>
<class=price>3</>

То при
$(".price").val()
Будет подставляться первая строка
Проверяй же через console.log какой именно товар пытается запросить
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы