0

Estoy usando el paquete laravel markable para agregar a favoritos los productos, pero cuando lo hago se recarga la página y no queda exactamente donde el usuario presionó el ícono del corazón para verificar que si fué agregado, estoy tratando de hacerlo con ajax, funciona pero no regresa a la Web sino que me lleva a la URL del JSON.

Mi HTML

@if($haveFavorite[$key])
    <a id="add_favorites" type="submit" title="{{ __('Favorites') }}" href="#">
        <i class="bi bi-suit-heart-fill text-rose" style="font-size: 1.2rem" title="Agregar a favoritos"></i>
    </a>
@else
    <a id="add_favorites" type="submit" title="{{ __('Favorites') }}" href="#">
        <i class="bi bi-suit-heart-fill text-gray-200" style="font-size: 1.2rem" title="Agregar a favoritos"></i>
    </a>
@endif

Mi Controlador (Si hago un return back(); en el controlador, no queda donde estaba, actualiza la página).

public function favorite($id)
{
    $favorite = Product::find($id);
    $user = auth()->user();

    Favorite::toggle($favorite, $user);

    return response()->json();
}

Mi Ajax

<script>
    let route = "{{route('products.favorites', $product->id)}}";
    $(document).on("click", "#add_favorites", function(e) {
        e.preventDefault();
        $.ajax({
            type:"get",
            url: route,
            success:function() {
                
            },
            error:function() {
            }
        });
    });
</script>
6
  • Si no respeta el e.preventDefault() que pusiste en el evento, tendrías que revisar que el evento se ejecute, poner un console,log o algo dentro que te indique eso. También es útil para cargar js usar stacks Commented el 5 ene. 2023 a las 13:01
  • Con stacks pasa lo mismo, al agregar console.log() en el ajax, no me da error. Realmente en success:function() {}, no tengo nada, solo requiero que se haga el llamado al controlador para que agregue o elimine el producto a favoritos y sin recargar la página se muestre el corazón gris o rosa dependiendo del caso.
    – Joseph
    Commented el 5 ene. 2023 a las 13:27
  • Lo que si me muestra es un issue Audit usage of navigator.userAgent, navigator.appVersion, and navigator.platform Affected Resources 1 source contentscript.js:1
    – Joseph
    Commented el 5 ene. 2023 a las 13:29
  • Me refería a confirmar si se ejecuta la función del evento on("click", "#add_favorites". Y lo de cambiar de color, lo tendrías que hacer en el success del ajax Commented el 5 ene. 2023 a las 15:09
  • También revisa que el id id="add_favorites sea único en todo el documento, por ej si está en cada producto de un listado Commented el 5 ene. 2023 a las 15:34

0

Examina otras preguntas con la etiqueta o formula tu propia pregunta.