2016-11-28 113 views
0

我已经存储在会话中的购物车,我想刷新会话无需重新加载页面 我已经试过这样: 查看:Laravel阿贾克斯内部servor 500(内部服务器错误)

<a href="#" id="product" data-id="{{ $product->id }}" class="item_add single-item hvr-outline-out button2">Add to cart</a> 

<script> 
$(document).ready(function() { 
    $('#product').click(function(event) { 
     event.preventDefault(); 

     let url = "{{ route('add-to-cart') }}"; 
     let id = $(this).data('id'); 

     $.ajax({ 
      url: url, 
      type: 'POST', 
      data: {product_id: id, _token: "{{ Session::token() }}"} 
     }) 
     .done(function() { 
      console.log("success"); 
     }) 
     .fail(function() { 
      console.log("error"); 
     }) 
    }); 
}); 

路线:

Route::post('/add-to-cart', '[email protected]')->name('add-to-cart'); 

的ProductsController:

public function addToCart(Request $request) 
{ 
    if ($request::ajax()) { 
     $id = $request->product_id; 

     $product = Product::find($id); 

     if (Session::has('products')) { 
      $products = Session::get('products'); 
      $products[] = $product; 
      Session::put('products', $products); 
     } 

     else { 
      $products = array($product); 
      Session::put('products', $products); 
     } 

     return response()->json(); 
    } 
} 

,当我点击添加到购物车在控制台中

+2

检查你的日志文件,还有地方在那里的提示。 – aynber

+0

@aynber在哪里可以找到该文件? –

+0

storage/logs/laravel.log – Wistar

回答

2

您所访问的ajax()静态方法(使用::),即送500(内部服务器错误)时,你应该使用->代替:

if ($request->ajax()) { 

使用Laravel日志文件

正如评论所说,Laravel可能是在告诉你这storage/logs/laravel.log,完成一个长的调用堆栈跟踪(您提到的行,以“#38”和“#39”开头)。只需滚动到“#1”之前,你就会找到你的罪魁祸首。

2

Laravel不允许不经过X-CSRF-TOKEN, 以下是我的工作示例希望它可以帮助你。

路线:

Route::post('block-user','[email protected]'); 

现在,你需要在 blade.php您的AJAX调用之前添加AJAX设置这样:

在头部添加这个

<meta name="csrf-token" content="{{ csrf_token() }}" /> 

我的脚本,如:

<script> 
//Ajax setup 
    $.ajaxSetup({ 
     headers: { 
      'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') 
     } 
    }); 

//Ajax call 

    $(".blockuser").bootstrapSwitch(); 
    $('.blockuser').on('switchChange.bootstrapSwitch', function() { 
     var userid = $('#userid').val(); 
     $.ajax({ 
      url:'/block-user', 
      data:{user_id : userid}, 
      type:'post', 
      success: function(data){ 
       alert(data); 
      } 
     }); 
    }); 
</script> 

控制器:

public function BlockUser(Request $request) 
{ 
    $userid = $request->get('user_id'); 
//perform operation 
}