【问题标题】:Delete object on laravel在 laravel 上删除对象
【发布时间】:2026-01-13 03:30:01
【问题描述】:

我正在学习 laravel,现在我试图删除没有表单的对象。 我想使用 js 来检测用户何时单击删除按钮并将通知返回给控制器。然后从 JS 文件中返回带有 id 的删除对象的控制器。

这是刀片文件

@extends ('layouts.master')

@section ('head.title')
Blog
@stop

@section ('body.content')
    <div class="container">
        <div class="row">
            <div class="col-sm-6 col-sm-offset-3">
            </div>
        </div>

        <form class="form-show">
            <div class="row">
                <div class="col-sm-6 col-sm-offset-3">
                    <h2> {{ $article->title}} </h2>
                    <p>  {{ $article->content}} </p>
                </div>

                <div class="row">
                    <div class="col-sm-6 col-sm-offset-3">
                        <a href=" {{ route('article.edit', $article->id) }}" class="btn btn-info">Update</a>
                        <button id="delete-button" type="submit" class="btn btn-primary">Delete</button>

                    </div>
                </div>
            </div>
        </form>
    </div>
       <script src="{{ asset('/js/jshow.js') }}"></script>
@stop

这是控制器文件

类 ArticlesController 扩展控制器 { 受保护的 $articleModel;

    public function __construct(Article $article){
        $this->articleModel = $article;
    }

    public function index(){
        $articles = $this->articleModel->getListArticles();
        // $articles = Article::paginate(10);
        return view('articles.index',compact('articles'));
    }    

    public function show($id){
        // $article = Article::find($id);
        $article = $this->articleModel->getArticleWithID($id);
        return view('articles.show',compact('article'));
    }

    public function delete($id){
        $this->articleModel->deleteArticle($id);
        return redirect()->route('articles.index');
    }
}

这里是JS文件

var deleteButton = document.getElementById("delete-button");
var idPost = document.getElementById("")
deleteButton.onclick = function() { 
    alert('Click to delete');
    return false; 
}

【问题讨论】:

  • 有什么问题?
  • 您必须在事件处理程序中向服务器发出 ajax 请求。

标签: javascript php laravel


【解决方案1】:

您需要使用jQuery JS 库中的$.ajax

试着去理解并做一些事情,如果有困难再回来。


就像Jerodev 说的,AJAX 调用可以不用jQuery 来完成,但我觉得jQuery 方法更容易理解。查看here 了解更多关于使用纯 JavaScript 进行 AJAX 的信息。

【讨论】:

  • ajax 可以在没有 jQuery 或其他库的情况下完成。
  • 正确,但我发现使用 jQuery 更容易调用 AJAX。但是,是的,jQuery 是可选的。
【解决方案2】:

Jquery 中的 AJAX 请求是为你准备的......

首先了解 AJAX 如何工作以请求服务器。

使用 jquery 为您轻松实现。

重新制作删除功能,使其更能够通过 AJAX 请求删除对象和响应数据。

public function delete(Request $req)
    {
$this->articleModel->deleteArticle($id);
return response()->json(['msg' => 'some Msg help]);
    }

为此功能制作路线。

然后发出 ajax 请求以获取此路由并删除对象并返回您制作的 msg。

但你必须先学习 AJAX。

【讨论】: