Laravel 5.8 не удается загрузить AJAX-вызов для удаления комментария - PullRequest
3 голосов
/ 28 апреля 2019

Я пытаюсь использовать вызов AJAX, чтобы удалить комментарий в моем приложении рецепта.Это продолжает давать мне 405 error: Method not allowed.Не уверен, где это ломается, это выглядит хорошо для меня.Может кто-нибудь, пожалуйста, посмотрите?

Вид лезвия

@foreach($recipe->comments as $comment)
    <div>
        @if($comment->name == Auth()->user()->name)
            <p><a href="/user/{{$comment->name}}">{{$comment->name}}</a></p>
            <p>{{$comment->comment}}</p>
            <button class="deleteComment" data-id="{{ $comment->id }}" data-token="{{ csrf_token() }}" >Delete Comment</button>
        @else
        @endif
    </div>
@endforeach

Пользовательский файл js

// Delete Comments AJAX 

$(".deleteComment").click(function(){
    var id = $(this).data("id");
    var token = $(this).data("token");
    $.ajax(
    {
        url: "/comment/delete/"+id,
        type: 'DELETE',
        dataType: "JSON",
        data: {
            "id": id,
            "_method": 'DELETE',
            "_token": token,
        },
        success: function ()
        {
            console.log("it Work");
        }
    });
    console.log("It failed");
});

Маршрут

Route::delete('comment/delete/{id}', 'CommentsController@destroy');

CommentController @ destroy

public function destroy($id)
    {
        Comment::destroy($id);
        return redirect()->back();
    }

Кто-нибудь способен увидеть, где он ломается ??

Ответы [ 3 ]

3 голосов
/ 28 апреля 2019
 Route::delete('comment/delete/{id}', 'CommentsController@destroy');
 public function destroy(Request $request,$id) 
 { 
     Comment::destroy($id); 
     return ['status'=> true] ; 
 }

добавить этот код

0 голосов
/ 28 апреля 2019

Проблема здесь в том. Вместо method: 'DELETE' вы скорее использовали type: 'DELETE', поэтому JQuery вообще не выполняет запрос, потому что у него нет метода. Это связано с тем, что в более новых версиях jquery тип был изменен на method . Используйте type, если вы используете версию jquery до 1.9.0

0 голосов
/ 28 апреля 2019

Я не знаю много о laravel, потому что я использовал его всего пару раз, и я все еще учусь, но вы можете попробовать изменить тип запроса с delete на post. У метода запроса DELETE HTTP нет тела для переноса некоторых данных, и вам нужно передать идентификатор комментария контроллеру. Это должно работать:


 $.ajax(
    {
        url: "/comment/delete/"+id,
        type: 'POST',
        dataType: "JSON",
        data: {
            "id": id,
            "_method": 'DELETE',
            "_token": token,
        },
        success: function ()
        {
            console.log("it Work");
        }
    });
    console.log("It failed");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...