如何删除Laravel中的多个复选框

时间:2017-10-14 04:36:19

标签: ajax laravel ajaxsubmit

如何删除Laravel中的所选复选框? 我应该在表单中使用什么方法? PostDelete? 我这样看是这样的:

<form class="cekboxForm" id="couponList" method="post"> 
            {{ csrf_field() }}
            <div class="col-md-12"> 
                <div class="table-responsive">
                    <table border="1" class="table datatable table-striped table-bordered" style="" width="100%"> 
                        <tbody>
                            @foreach($dealCoupons->chunk(3) as $chunked_coupons)
                            <tr>
                                @foreach( $chunked_coupons as $dealCoupon )
                                <td>
                                    <input type="checkbox" name="couponCheck[]" class="cekbox" value="{{$dealCoupon->CouponNo}}">
                                    <strong>{{$dealCoupon->CouponNo}}</strong>
                                </td>
                                @endforeach
                            </tr>
                            @endforeach
                        </tbody>
                    </table> 
                </div> 
            </div> 
            <div class="count"><strong>1 - {{count($dealCoupons)}}. Total {{count($dealCoupons)}} Kupon</strong> </div>
            <div align="right">
                <a href="#" target="_blank">
                    <div class="btn btn-primary">Print Coupon</div>
                </a>
            </div> 
        </form>

这是我删除数据的控制器

public function deleteDealCoupon(Request $request)
{
    foreach($request->couponCheck as $coupon){
        $dealCoupon = DB::table('deal_coupons')->where('CouponNo', $coupon)->delete();
    }
    return response()->json([
        "error" => "0",
        "message" => "Success"
    ]);
}

这是我的ajax

$('#couponList').ajaxSubmit({
                type: "DELETE",
                dataType: 'json',
                url : "{{ route('deal.deletecoupons') }}",
                data: {
                    "_method": "delete",
                    "_token": "{{ csrf_token() }}",
                },
                success : function(data){
                    console.log(data)
                },
                error : function(a,b,c){
                    alert(b);
                }
            });

这是我的路线

Route::delete('/deal/deleteCoupons', ['as' => 'deal.deletecoupons', 'uses' => 'DealController@deleteDealCoupon']);

我正在尝试删除已检查的数据,但没有任何反应。 我也检查过inspect元素,它没有发送任何响应或错误。

DealCoupon表

Schema::create('deal_coupons', function (Blueprint $table) {
        $table->integer('post_id');
        $table->string('CouponNo');
        $table->boolean('IsUsed');
        $table->timestamps();
    });

1 个答案:

答案 0 :(得分:0)

当您尝试执行RESTful时,不要将动词添加到您的资源URI中,而只使用HTTP动词。

所以路线不应该被命名为&#39; / deal / deleteCoupons&#39;

我想以下解决方案

  1. RESTful解决方案:

    1.1将路由uri更改为/ deal / Coupons,使用HTTP DELETE调用它。

    1.2在网页ajax中,使用item.foreach()删除每个选定的优惠券ID。一次删除一张优惠券。

    或者json_encode将选定的ID编码为字符串,并使/ deal / Coupons接受编码的id数组。将其命名为删除一系列ID。

  2. 非RESTful解决方案:

    2.1保留路由uri名称,使用HTTP POST调用它

    2.2修改路由uri,为其添加显式参数以获取json_encoded ID。

    使用$ request-&gt;输入(&#39; id_to_delete&#39;)从js获取您的ID。