Laravelbenvan egy js kódom, ami fechel egy routeot, amit egy kontroller kezel, valamiért amellett, hogy megjeleníti azt a divet, amelyiket kell (error/message) előtte még egy üres lapon megjeleníti a json objektumot. Ez miért lehet?
JS kód:
document.querySelectorAll('.new_quantity').forEach(input => {
input.addEventListener('change', function () {
const itemId = this.getAttribute('data-id'); // Adat lekérése az input mezőről
const productQuantity = this.value; // Új mennyiség lekérése
fetch(`/cart/edit/${itemId}`, { // Kérés az edit URL-re
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-TOKEN': csrfToken,
},
body: JSON.stringify({ id: itemId, quantity: productQuantity }),
redirect: 'manual'
})
.then(response => {
if (!response.ok) {
return response.json().then(data => {
throw new Error(data.error || 'Hiba történt');
});
}
return response.json();
})
.then(data => {
const messageContainer = document.getElementById('message_popup');
const errorContainer = document.getElementById('error_popup');
const messageText = document.getElementById('message_text');
const errorText = document.getElementById('error_text');
if (data.message) {
messageText.innerText = data.message; // Sikerüzenet beállítása
messageContainer.style.display = 'flex'; // Megjelenítés
errorContainer.style.display = 'none'; // Hibák elrejtése
} else if (data.error) {
errorText.innerText = data.error; // Hibaüzenet beállítása
errorContainer.style.display = 'flex'; // Megjelenítés
messageContainer.style.display = 'none'; // Sikerek elrejtése
}
})
.catch(error => {
const errorContainer = document.getElementById('error_popup');
const errorText = document.getElementById('error_text');
errorText.innerText = error.message || 'Ismeretlen hiba történt.'; // Hibakezelés
errorContainer.style.display = 'block'; // Hibaüzenet megjelenítése
});
});
});
controller:
public function updateQuantity(Request $request, $id) {
$quantity = $request->input('quantity');
if (Auth::check()) {
$cartItem = CartItem::where('user_id', Auth::user()->id)->where('id', $id)->first();
$product = $cartItem->product;
$productStock = $product->product_stock_quantity;
if ($quantity > $productStock) {
return response()->json(['error' => 'Nincs elég készlet a kívánt termékből!']);
}
$cartItem->quantity = $quantity;
$cartItem->save();
return response()->json(['message' => 'A kosár sikeresen frissítve lett!']);
}
else {
$cartItems = CartItemSessionModel::fromSession(session('cart', []));
$cartItem = $cartItems->firstWhere('id', $id);
$product = Product::find($cartItem->id);
$productStock = $product->product_stock_quantity;
if ($quantity > $productStock) {
return response()->json(['error' => 'Nincs elég készlet a kívánt termékből!']);
}
$cartItem->quantity = $quantity;
CartItemSessionModel::saveToSession($cartItems);
return response()->json(['message' => 'A kosár sikeresen frissítve lett!']);
}
}
Te lehetsz az első, aki segít a kérdezőnek!
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!