【发布时间】:2017-08-16 03:07:05
【问题描述】:
我正在使用 Laravel 制作一个简单的网站,在我的 PagesController 中,我有一个函数可以将项目存储到会话中,如果项目尚未存储在会话中,则增加 cartCount。
在我的网站上,我在每个项目上都有一个按钮,单击该按钮时,会使用 AJAX 将 'item_id' 发送到调用函数 postToCart 的网站。我要做的是:成功添加项目后返回item_name。
当我第一次单击该按钮时,它告诉我该项目已被添加,这正是我想要的。问题是,当我第二次按下按钮时,函数postToCart又进入了if语句。问题只是第二次发布请求之后一切正常。
public function postToCart(Request $request) {
$id = $request->input('item_id');
$item = Item::all()->where('item_id', '=', $id)->first();
if (!session()->has($id))
{
session()->put($id, 1);
session(['cartCount' => session('cartCount') + 1]);
return $item->item_name;
}
}
客户端的 AJAX:
function cart_click(id, url) {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type: 'POST',
url: url,
data: {
'item_id': id
},
success: function(result){
if (result)
{
alert('Item added: '.concat(result));
}
else
{
alert('Item already in cart');
}
}
});
}
【问题讨论】:
-
你确定,第一个请求也输入
if语句,第二个也输入?是否有可能第一个请求在某处被忽略/出错? -
是的,因为我在客户端的 ajax 中实现了成功函数,并且我使用的是
alert(id),所以我知道什么时候会返回。 -
您可以在
javascript中使用localStorage。 -
我可以,但 Laravel 也应该可以正常工作。
-
你能贴出
success function implementation in ajax on client side的代码
标签: php laravel session laravel-5 session-variables