【问题标题】:How to update database with AJAX & Laravel 5.2?如何使用 AJAX 和 Laravel 5.2 更新数据库?
【发布时间】:2018-04-11 01:44:18
【问题描述】:

更新问题:

我想用 AJAXLaravel 5.2 框架更新数据库表列。我有一个按钮Delier,当我单击该按钮时,它会将一列从Not Shipped 更新为Shipped。我还使用 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

刀片前端:

这是更新列,但在更新后它重定向了另一个页面并且它只显示弹出它不需要提交弹出确认按钮。有没有办法做到这一点?谁能回答我的以下问题:

  • 在 Laravel 中使用 AJAX 的最佳程序是什么。
  • 更新数据的路由调用是什么?
  • 我如何定义 AJAX url?

【问题讨论】:

  • 这是什么{{url('admin/winner/status/')}}" + {{$id}} ??你在做更新(保存)是吗?
  • @AbdullaNilam 我想更新。我如何声明方法 url,以便如果有人点击按钮,那么方法将被调用并更新数据库。
  • @AbdullaNilam 我正在等待答复,谢谢。
  • 检查答案

标签: javascript php ajax laravel laravel-5.2


【解决方案1】:

这里要做的是,当你加载表单时,我会将用户 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'));

【讨论】:

  • 我正在尝试您的程序并让您知道。同样,我在这里没有任何形式。我只需单击一个按钮和状态更新。我会创建一个隐藏的表单吗?
  • 检查我的前端视图(更新的问题),我将从那里更新产品状态。这里没有形式。点击按钮后我会一一更新状态。
  • 更新了我的问题。它可以在没有 ajax 的情况下进行更新。我如何实现这一点。
  • 会保留href="{{route('winner.status',$dataQr-&gt;id)}}" 吗?为什么我需要var id?它更新了,所以我想我只是 ajax 调用。我可以从$dataQr-&gt;id 获取 id,所以我认为不需要生成 id。我只需要在确认弹出窗口后更新数据。
【解决方案2】:

许多 JavaScript 框架还使用“大括号”来指示给定的表达式应显示在浏览器中

在 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 
}

【讨论】:

    猜你喜欢
    • 2016-07-05
    • 2018-04-19
    • 1970-01-01
    • 1970-01-01
    • 2016-09-25
    • 1970-01-01
    • 2017-01-17
    • 2020-04-16
    • 2019-05-31
    相关资源
    最近更新 更多