如何在Laravel中使用ajax单击按钮时更新数据?

时间:2018-04-13 03:45:36

标签: php ajax laravel laravel-5

我正在使用Laravel 5.4,我的表中有Check Out按钮。我想当我点击该按钮时,它会更新数据库中的结账时间并更新我的表格。我正在尝试使用ajax,但它无法正常工作,但有时它也可以正常工作但不会重新加载表格,所以我需要手动刷新页面。
这是我的按钮代码:
<a type="button" name="checkout_btn" id="checkout_btn" data-id=" {{ $Data->VST_ID }}" class="btn btn-primary">Check Out</a>

这是我的ajax代码:

$('#checkout_btn').click(function addseries(e){
   var VST_ID = $(e.currentTarget).attr('data-id');
   alert("dfads");
   $.ajax({
      type: "GET",
     url: 'visitor/checkout',
     data: "VST_ID="+VST_ID,
     success: function(data) {
     console.log(data);

   }
}); 
}); 

这是我的控制器代码:

public function Checkout(Request $request)
{   
    $visitor = Visitor::where("VST_ID",$request['VST_ID'])->first(); 
    $visitor->VST_CHECKOUT = date('Y-m-d H:i:s');
    $visitor->UPDATED_AT = date('Y-m-d H:i:s');
    $visitor->UPDATED_BY = 'User';
    $visitor->save();
    return redirect()->route('Visitor.VList')->with('message','The Visitor has been Checked Out !');       
}

2 个答案:

答案 0 :(得分:1)

您可以通过两种方法完成此操作。

第一:通过对表体进行不同的视图。

在控制器设置视图中,如下例

 if($request->ajax())
 {
    $records=\View::make('admin.settings.state.state-holiday-tbody',['contents'=>$contents,'active'=>$active,'tab'=>$tab])->render();
    return response()->json(array('html'=>$records));
 }

然后执行for循环以在表体中追加数据。

注意:调用函数以获取文档准备好的所有表记录。

第二:通过获取响应中的所有记录,使用javascript for循环来制作表格。

答案 1 :(得分:1)

我认为如果你想更新数据,方法是PUT,你为什么要使用GET方法?

$('#checkout_btn').click(function addseries(e){
var VST_ID = $(e.currentTarget).attr('data-id');
   $.ajax({
     type: "PUT",
     url: 'visitor/checkout' + VST_ID,
     success: function(data) {
       console.log(data);
   }
}); 
}); 

更改您的控制器

public function Checkout(Request $request, $id)
{   
    $visitor = Visitor::find($id); 
    $visitor->VST_CHECKOUT = date('Y-m-d H:i:s');
    $visitor->UPDATED_AT = date('Y-m-d H:i:s');
    $visitor->UPDATED_BY = 'User';
    $visitor->save();
    return redirect()->route('Visitor.VList')->with('message','The Visitor has been Checked Out !');       
}

并更改你的route.php

Route::put('visitor/checkout/{id}', 'visitorController@Checkout');