【问题标题】:Ajax Delete in LaravelLaravel 中的 Ajax 删除
【发布时间】: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 编辑了代码先生!看看下面我编辑的代码你能帮我吗?谢谢
  • 你已经放了一个链接标签,所以它会重定向你的页面,而不是使用按钮

标签: html ajax laravel laravel-5 eloquent


【解决方案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

然后在响应时简单地删除该元素。

强制删除的过程相同。

希望这会有所帮助。

【讨论】:

  • 是的,在您的示例中它是客户端。
猜你喜欢
  • 2016-12-01
  • 1970-01-01
  • 2019-07-25
  • 2018-07-10
  • 2021-08-02
  • 1970-01-01
  • 1970-01-01
  • 2019-12-11
  • 2015-06-03
相关资源
最近更新 更多