How to add product in wishlist without redirecting to wishlist page

Stefan Bogdanescu
Founder & Senior Architect · 9 September 2026

Adding Products to a Wishlist Without Redirecting: A Laravel Solution

As an e-commerce developer, I frequently encounter requests like yours - adding products to a wishlist without disrupting the user’s current browsing experience. In this post, we’ll explore how you can achieve this functionality using Laravel and its ecosystem of packages.

Understanding the Current Behavior

When you click on the “Add to Wishlist” button in your current implementation, it redirects the user to the /wishlist page after adding an item. This redirect is likely handled by a controller method that looks something like this:

public function store(WishlistRequest $request)
{
    Wishlist::create($request->validated());
    return redirect()->route('wishlist.index');
}

The problem lies in the return redirect() part - it forces the user to navigate away from their current page, which can be disruptive and confusing.

A Better Approach: AJAX Requests

To solve this issue without requiring a server-side redirection, we’ll use an AJAX request instead. Here’s how you can modify your JavaScript and Laravel code:

  1. JavaScript/Blade Script: Update your “Add to Wishlist” button to make an AJAX POST request.
<script>
    document.getElementById('add-to-wishlist').addEventListener('click', function(event) {
        event.preventDefault();

        fetch('/wishlist', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'X-CSRF-TOKEN': csrfToken // Ensure you have this token set
            },
            body: JSON.stringify({
                product_id: {{ $product->id }}
            })
        })
        .then(response => response.json())
        .then(data => console.log('Product added to wishlist:', data));
    });
</script>
  1. Laravel Controller: Update your store method to return a JSON response instead of redirecting.
public function store(Request $request)
{
    Wishlist::create($request->validate([
        'product_id' => 'required|exists:products,id',
    ]));
    return response()->json(['success' => true, 'message' => 'Item added to wishlist']);
}

Key Points and Best Practices

  • Use AJAX for client-side requests: This allows you to update the page without a full reload.
  • Validate server-side: Even though it’s an AJAX request, always validate the input on the server. Never trust client-side data.
  • Return JSON responses: When handling AJAX requests, return JSON data instead of views or redirects.

Conclusion

By leveraging Laravel’s built-in JSON response and JavaScript’s fetch API, you can seamlessly add products to a user’s wishlist without disrupting their browsing experience. This approach provides a smooth, responsive interface for your users while keeping your codebase clean and efficient.

Remember to always validate server-side data even when dealing with AJAX requests, as it’s a crucial security measure in web development.

Our network