Después de hacer clic en la imagen de eliminación si la matriz tiene 7 elementos, uno elimina y hago clic en otro, elimina otro elemento, pero la matriz sigue siendo 6, no actualizó el último que eliminé, ¿cómo puedo resolverlo? Gracias por su tiempo.
jquery
$(document).on('click', '.remove-image', function() { var id = $(this).attr('id'); var product_id =$(this).attr('product_id'); var name =$(this).attr('name'); var array=$(this).attr('array'); var arr = JSON.parse(array); // confirm("Are You sure want to delete !"); var arr = arr.filter(val => val !== name); console.log(arr); var formData = { id: id, product_id : product_id, image: arr }; // $.ajax({ // type: "POST", // url: "{{ url('image/delete') }}", // data: formData, // success: function () { // alert('workinggggg'); // }, // error: function () { // alert('errorrrrrrrr'); // } // }); $(this).parent('div').remove(); });Hoja de Laravel
@foreach (json_decode($gallery->image) as $key => $image) <div> <span name="{{ $image }}" id="{{ $gallery->id }}" product_id="{{ $product->id }}" array="{{ $gallery->image }}" class="flex text-red-400 pl-3 image cursor-pointer remove-image">X</span> <img src="{{ asset('storage/' . $image) }}" class="pr-5" alt="{{$product->slug}}"> </div> {{ var_export($key) }} @endforeachSu código obtiene correctamente una matriz filtrada, pero no vuelve a escribir el resultado en el atributo, por lo que la próxima vez que se ejecuta el código, la matriz se vuelve a generar a partir del valor del atributo, que aún tiene el JSON original.
Así que agregue una declaración a esta parte:
var array = $(this).attr('array'); var arr = JSON.parse(array); var arr = arr.filter(val => val !== name); $(this).attr('array', JSON.stringify(arr)); // <---