如何使用AJAX&更新数据库Laravel 5.2?

时间:2017-10-30 06:22:37

标签: javascript php ajax laravel laravel-5.2

更新的问题:

我想使用 AJAX Laravel 5.2 框架更新数据库表列。我有一个按钮Delier,当我点击该按钮时,它会更新从Not ShippedShipped的列。我还使用 sweetAlert 插件进行弹出式样设计。我搜索了很多。但我没有找到完美的程序。我试过这种方式:

路线:

Route::get('/winner/status/{id}', ['as' => 'winner.status', 'uses' => 'WinnerController@statusUpdate']);

WinnerController:

public function statusUpdate(Request $request, $id)
{
    $winner = Winner::find($id);
    $winner->product_stat = "Shipped";

    $winner->save();
    $request->session()->flash('alert-info', 'Product Status Updated!'); 
    return Redirect::to('admin/winner/detail');
}

视图中的脚本:

$(".action-button").click(function(){    
swal({
  type : 'warning',
  title: 'Submit what you want',
  input: 'text',
  showCancelButton: false,
  confirmButtonText: 'Submit',
  showLoaderOnConfirm: true,
  allowOutsideClick: false

}).then(function (text) {

  $.ajax({
    type: "POST",
    url : '',
    success: function(data){
        swal('Confirmed!','success')
    }

  });
})

});

刀片:

@foreach($dataQrDetails as $dataQr)
    <tr>
        <td> {{  $dataQr->product_name }} </td>
        <td> {{  $dataQr->product_stat }} </td>
        <td> {{  $dataQr->created_at }} </td>
        <td> <a class="btn btn-info btn-xs action-button" href="{{route('winner.status',$dataQr->id)}}">Delier</a></td> 
    </tr>                            
@endforeach

刀片前端:

enter image description here

这是更新列,但更新后重定向另一个页面并显示弹出窗口,不需要提交弹出窗口的确认按钮。反正有没有这样做?请任何人都可以回答我的问题:

  
      
  • 在Laravel中使用AJAX的最佳方法是什么。
  •   
  • 更新数据的路由调用是什么?
  •   
  • 我如何定义AJAX网址?
  •   

2 个答案:

答案 0 :(得分:0)

许多JavaScript框架也使用&#34;卷曲&#34;用于表示给定表达式的大括号应显示在浏览器中

在laravel中传递ajax请求变量的最佳方法]

你的路线是

Route::get('testUrl/{id}', 'TestController@getAjax');

ajax请求

<script>
  var Id = <?php echo $id; ?>
    $(function(){
       $('#button').click(function() {
            $.ajax({
                url: 'testUrl/{id}',
                type: 'GET',
                data: { id: Id },
                success: function(response)
                {
                    $('#something').html(response);
                }
            });
       });
    });    
</script>

TestController.php

public function getAjax()
{
    $id = $_GET['id'];
    return $id // any value return as a response 
}

答案 1 :(得分:0)

  

这里做的是,当您加载表单时,我会将用户ID保存在隐藏字段中,当我提交时也会将其传递给控制器​​

格式

<input type="hidden" name="id" value="{{ $id }}">

在AJAX中

$.ajax({
    url: "/update-winner",
    type:'POST',
    data: {_token:_token, id:id, .....},
    success: function(data) {
        if($.isEmptyObject(data.error)){
            swal('Confirmed!',data.success); # or swal('Confirmed!','success')
        }else{
            swal('error!',data.error); # or swal('error!','Errorrrrr')
        }
    }
});

路线

Route::post('update-winner','HomeController@statusUpdate');

在控制器中

function statusUpdate()
{

    <!-- if need  -->
    $validator = Validator::make($request->all(), [
        /....
    ]);

    if ($validate->fails())
    {
        return response()->json(['error'=>$validator->errors()->all()]);
    }
    else
    {
        $id = $request->input("id");
        $winner = Winner::find($id);
        $winner->product_stat = "Shipped";

        $winner->save();
        return response()->json(['success'=>'Added new records.']);
    }
}

修改01

在删除按钮中添加此data-delete="{{ id_fiedld_name}"

在Ajax中你可以抓住

var id = ($(this).data('delete'));