Laravel 中的 Ajax 删除
Posted
技术标签:
【中文标题】Laravel 中的 Ajax 删除【英文标题】:Ajax Delete in Laravel 【发布时间】:2019-05-03 07:32:31 【问题描述】:如何在不刷新页面的情况下删除表中的数据这里是我的href按钮
这两个按钮是删除一个是存档,一个是强制删除 问题是它们在点击时会刷新。
<td><a href="/admin/clients/archTrash/ $client->id " class="btn btn-info">Active</a></td>
<td><a href="/admin/clients/archTrashPermanent/ $client->id " class="fa fa-trash btn btn-danger"></a></td>
我的控制器
$client = new Client;
$client->client_code = $request->input('client_code');
$client->client_name = $request->input('client_name');
$client->save();
已编辑
路线
Route::get('/admin/clients/archTrash/id', 'Admin\ClientsController@archTrash');
Route::get('/admin/clients/archTrashPermanent/id', 'Admin\ClientsController@archTrashPermanent');
【问题讨论】:
添加你的路由/web.php文件 @SaurabhMistry 编辑了代码先生!看看下面我编辑的代码你能帮我吗?谢谢 你已经放了一个链接标签,所以它会重定向你的页面,而不是使用按钮 【参考方案1】:不要使用Route::get
,而是使用Route::delete
。
除此之外,在 ajax 调用中将类型:'Put' 更改为:'DELETE'。
$Users = UserModel::find($id);
$Users->delete($id);
可以写成:
UserModel::find($id)->delete();
如需更多帮助,您可以访问Link1Link2
【讨论】:
这会帮助我不刷新页面吗? 当然对你有帮助,还有一点建议请学习How Ajax work 我是 laravel 的新手,真的很抱歉:(请 也许链接 1 和链接 2 对你有很大帮助 哦,亲爱的,这是一个关于如何做的想法我为您提供 laravel 两个链接,请点击该链接,然后您将更好地了解如何做,还有一件事您必须拥有的编程没有魔法学习每一个部分,否则你不会做你想做的事。【参考方案2】:在你的刀片模板中这样做:
<td><button type="button" data-client_id=" $client->id " class="btn-archive btn btn-info">Active</button></td>
<td><button type="button" data-client_id=" $client->id " class="btn-delete fa fa-trash btn btn-danger"></button></td>
现在添加下面的 ajax 脚本:
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script>
$(document).on('click','.btn-archive',function()
var clientID=$(this).attr('data-client_id');
var url='/admin/clients/archTrash/'+clientID;
callAjax(url);
);
$(document).on('click','.btn-delete',function()
var clientID=$(this).attr('data-client_id');
var url='/admin/clients/archTrashPermanent/'+clientID;
callAjax(url);
);
function callAjax(url)
$.ajax(
url:url,
dataType:'json',
type:'GET',
success:function(response)
console.log(response);
,
error:function(err)
console.log(err);
);
</script>
【讨论】:
当我点击按钮时没有任何反应,为什么它不工作先生:( 我放了** 它真的越来越近了,但我仍然需要刷新才能删除它为什么会这样:( 仍然无法正常工作,先生.. 当我点击时没有任何反应,如果我刷新数据将自动删除,这是为什么呢? 我会等你回答 b4 我将你的答案标记为已回答谢谢。我等着谢谢你【参考方案3】:在这里,您需要使用前端对控制器进行两次 ajax 调用。假设您正在使用 jquery:
<td><a href="javascript:void(0);" url="/admin/clients/archTrash/ $client->id " onClick="deleteAjax(this);" class="btn btn-info">Active</a></td>
然后在jquery函数deleteAjax中通过获取属性进行调用:
function deleteAjax (elm)
var element = $(elm);
ajax(
url: element.attr('url'),
type: 'GET',
success: function(data)
console.log(data)
);
现在在控制器中只需将 deleted_at 条目放入记录中以删除临时目的,即:
UserModel::where('id', $id)->first()->delete(); //if softdelete is enabled
然后在响应时简单地删除该元素。
强制删除的过程相同。
希望这会有所帮助。
【讨论】:
是的,在您的示例中它是客户端。以上是关于Laravel 中的 Ajax 删除的主要内容,如果未能解决你的问题,请参考以下文章