如何使用“更改时”数据表更新数据库中的第二行

时间:2019-11-11 04:20:30

标签: jquery ajax laravel datatable

我正在尝试使用选择选项更改订单状态。数据表的第一行工作正常。但是当更改二阶状态时,它不起作用。

选择选项代码:

 <select name="status" id="status">status
      <option value="Order Placed">{{$assign->status}}</option>
      <option value="On Way">On Way...</option>
      <option value="Delivered">Delivered...</option>
      <option value="Cancelled">Cancelled...</option>
      <input type="hidden" id="order_id" value="{{ $assign->order->id }}" name="order_id">
</select>

jQuery代码:

$(document).ready(function () {
        $('#table_id').on('change' ,'select', function() {
        var status = $('#status').val();
        var order_id = $('#order_id').val();
        alert(status);

        $.ajax({
          type: "get",
          url: "{{ url ('/admin/abc')}}",
          data: {status: status, order_id: order_id},
          dataType: "JSON",
          success: function (response) {
            $('.alert').show();
            $('.alert').html(result.success);
          }
        });
    });

  });

Route.php:

Route::get('/admin/abc','AdminController@abc')->name('assign.abc');

控制器代码:

public function abc(Request $req){
    DB::table('assigns')->WHERE('id',$req->order_id)->update(['status' => $req->status]);
}
}

3 个答案:

答案 0 :(得分:1)

更改路由文件

Route::post('/admin/abc','AdminController@abc')->name('assign.abc');

更改您的jQuery代码。

$(document).ready(function () {
        $('body').on('click','#table_id',function(){
        var status = $('#status').val();
        var order_id = $('#order_id').val();
        $.ajax({
          type: "POST",
          url: '{{ route("assign.abc") }}',
          headers: {
                    'X-CSRF-TOKEN': '{{ csrf_token() }}'
                },
          data: {status: status, order_id: order_id},
          dataType: "JSON",
          success: function (response) {
            $('.alert').show();
            $('.alert').html(result.success);
          }
        });
    });

  });

答案 1 :(得分:0)

您应该获得选择输入的选择值

使用

$('option:selected',this).val()

$(document).ready(function () {
        $('#table_id').on('change' ,'select', function() {
        var status = $('option:selected',this).val();
        ...

答案 2 :(得分:0)

public function abc(Request $req, Assign $assign){
 $data = Assign::find($req->order_id);
        $data->status = $req->status;
        $data->save();
         return response()->json(['success'=>'Saved successfully.']);

}

Try This On your Controller

in Route 
Route::get('/admin/abc','AdminController@abc')->name('assign');

in js

$(document).ready(function () {
        $('#table_id').on('change' ,'select', function() {
        var status = $('#status').val();
        var order_id = $('#order_id').val();
        alert(status);

        $.ajax({
          type: "get",
          url: 'assign',
          data: {status: status, order_id: order_id},
          dataType: "JSON",
          success: function (response) {
            $('.alert').show();
            $('.alert').html(result.success);
          }
        });
    });

  });