如何删除Laravel中的所选复选框?
我应该在表单中使用什么方法? Post
或Delete
?
我这样看是这样的:
<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();
});
答案 0 :(得分:0)
当您尝试执行RESTful时,不要将动词添加到您的资源URI中,而只使用HTTP动词。
所以路线不应该被命名为&#39; / deal / deleteCoupons&#39;
我想以下解决方案
RESTful解决方案:
1.1将路由uri更改为/ deal / Coupons,使用HTTP DELETE调用它。
1.2在网页ajax中,使用item.foreach()删除每个选定的优惠券ID。一次删除一张优惠券。
或者json_encode将选定的ID编码为字符串,并使/ deal / Coupons接受编码的id数组。将其命名为删除一系列ID。
非RESTful解决方案:
2.1保留路由uri名称,使用HTTP POST调用它
2.2修改路由uri,为其添加显式参数以获取json_encoded ID。
使用$ request-&gt;输入(&#39; id_to_delete&#39;)从js获取您的ID。