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 删除的主要内容,如果未能解决你的问题,请参考以下文章

Laravel dosent 通过 ajax 删除记录?

Laravel 不删除记录

Laravel Ajax 使用按钮删除记录

使用 AJAX 在 Laravel 5.3 中删除记录

如何在 laravel post 方法中从 ajax 中删除 403 错误

删除网格 laravel 的所有数据后,网格的标题仍然存在