【发布时间】:2021-11-19 04:24:59
【问题描述】:
我正在尝试使用 Ajax 从经典加载数据表转移到服务器端。我正在努力用下面的代码“删除”电子邮件。单击后不会删除任何订阅者或电子邮件。如果有人可以帮助我,那就太好了!我正在尝试使用与之前相同的逻辑来通过 Ajax 加载。我在浏览器中没有收到任何错误。
我的应用程序在 Laravel 中,它在控制器中:
public function ajaxDelete(Request $request)
{
$data = $request->all();
if (isset($data['ids']) && is_array($data['ids']) && count($data['ids']) > 0) {
$deleted = null;
$idCnt = 0;
foreach ($data['ids'] as $id) {
$subscriber = Subscriber::find($id);
// $subscriber = Subscriber::find($request->input('id'));
if (!empty($subscriber) && $this->user->canDeleteSubscriber($subscriber)) {
$email = $subscriber->email;
$subscriber->delete();
$deleted = true;
$idCnt++;
}
}
}
{
echo 'Data Deleted';
}
}
这是我加载按钮的方式:
$deleteButton = '<a href="#" class="btn btn-coffee btn-small delete-subscriber" id="'.$subscriber['id'].'"><i class="glyphicon glyphicon-remove"></i> Delete</a>';
$action = $deleteButton;
这是我的 JS 中删除操作的 ajax 调用:
$('#table').on('click', '.delete-subscriber', function(){
var sid = $(this).attr('id');
// e.preventDefault();
// var sid = $(this).prop("id").substr(4);
// $(".delete-data").remove();
if(confirm("Are you sure you want to Delete this data?"))
{
$.ajax({
url:"{{ route('subscribers.ajaxdelete')}}",
mehtod:"post",
data: {id: sid},
success: function(response){
alert("Record deleted.");
// alert(data);
$('#table').DataTable().ajax.reload();
}
})
}
else
{
return false;
}
});
这是ajaxdelete函数的路径:
Route::get('delete-subscriber', 'SubscriberController@ajaxDelete')->name('subscribers.ajaxdelete');
这是我之前的代码,我尝试从这个逻辑更改为 ajax,也许这会更好地解释。
public function delete(Request $request)
{
$data = $request->all();
if (isset($data['ids']) && is_array($data['ids']) && count($data['ids']) > 0) {
$deleted = null;
$idCnt = 0;
foreach ($data['ids'] as $id) {
$subscriber = Subscriber::find($id);
if (!empty($subscriber) && $this->user->canDeleteSubscriber($subscriber)) {
$email = $subscriber->email;
$subscriber->delete();
$deleted = true;
$idCnt++;
}
}
return redirect()->back()->with(['deleted' => $deleted, 'idCnt' => $idCnt, 'ids' => $data['ids']]);
} else {
return redirect()->back();
}
}
JS:
$(".delete-subscriber").on("click", function (e) {
e.preventDefault();
var sid = $(this).prop("id").substr(4);
$(".delete-data").remove();
if (confirm('Are you sure?')) {
$("#delete-form").append('<input class="delete-data" type="hidden" name="ids[]" value="' + sid + '">');
$("#delete-form").submit();
}
return false;
});
<form action="{{ action('SubscriberController@delete') }}" id="delete-form" method="post">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>
【问题讨论】:
-
您在控制器方法中期待
ids,但您只发送id
标签: javascript php jquery ajax laravel