Usar in_array para comparar dados de array não funciona [fechado]
Como você pode ver na foto, vários produtos. Cada div do produto tem um removebotão. Quando eu clico neste botão, o nome do produto daquele produto específico é armazenado em uma toBeRemovedvariável JS. Preciso enviar essa variável para o PHP. Para perceber isso, usei o método Ajax Get, no qual passo a variável por meio do URL:
CÓDIGO HTML:
<p><button class="btn-remove">Remove</button></p>
Código Javascript:
const removeBtn = document.querySelectorAll('.btn-remove');
removeBtn.forEach((item) => {
item.addEventListener('click', function() {
const toBeRemovedName = item.parentNode.parentNode.children[0].innerHTML;
$.ajax({
url: "./shopping_cart.php?toBeRemovedName=" + toBeRemovedName,
method: "GET"
});
});
});
Meu script PHP já contém um array com todos os nomes de produtos que você pode ver na imagem ( $_SESSION['name_arr']). O que eu gostaria de fazer é: comparar a variável toBeRemovedNamecom todos os elementos do array. Se verdadeiro -> remova aquele nome do array. O problema: parece que a $removevariável não obtém as informações passadas em Javascript? Já tenho alguns exemplos de código:
CÓDIGO PHP:
<?php
session_start();
//contains all the product names that you can see on the picture
$name_arr = $_SESSION['name_arr']; if(isset($_GET['toBeRemovedName'])) {
$remove = $_GET['toBeRemovedName'];
for($i=0; $i<sizeof($name_arr); $i++) {
if(in_array($remove, $name_arr)) {
array_splice($name_arr, $i, 1);
}
}
}
?>
Respostas
Também há um bug em seu código Js.
Substitua seu código Js por este e tente novamente.
let removeBtn = document.querySelectorAll('.btn-remove');
removeBtn = [...removeBtn];
removeBtn.forEach((item) => {
item.addEventListener('click', function() {
const toBeRemovedName = item.parentNode.parentNode.children[0].innerHTML;
$.ajax({
url: "./shopping_cart.php?toBeRemovedName=" + toBeRemovedName,
method: "GET"
});
});
});
Por que não ocultar o elemento com JavaScript em vez de um código de status HTTP de 200. Além disso, se o elemento foi removido como você mencionou em um de seus comentários, ocultá-lo com JavaScript será uma opção melhor e você terá uma boa experiência do usuário também . Ninguém gosta de recarregar a página atualmente. Se você quiser recarregar, pode fazer isso com javascript usando o código abaixo.
window.location.reload()
Isso também lhe proporcionaria um recarregamento da janela.