POST метод Laravel Ajax не допускается - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь хранить комментарии о клиентах в админ-панели.
Я получаю ошибку 405 (метод не разрешен) при отправке ajax-запроса в Laravel 5.5
И все отлично работает, когда я отправляю данные в формате html без ajax.

Ajax:

$.ajaxSetup({
    headers: {
        "X-CSRF-TOKEN": $("meta[name='csrf-token']").attr("content")
       }
    });

$(".save-comment").click(function(e) {
    e.preventDefault();
    var id = $("#hidden-id").val();
    var type = $("#slect-comment-type option:selected").val();
    var text = $("#comment").val();
    console.log(id);
    console.log(type);
    console.log(text);
$.post("storeComment", { id: id, type: type, text: text })
    .done(function(data) {
    console.log(data);
    alert("Success");
    $("#add-comment").css("display", "none");
    })
    .fail(function() {
    alert("Fail");
    });
});

Я передаю правильные данные в {id: id, type: type, text: text}, как я вижу в консоли.

Маршрут:

Route::post('/comments/store' , 'CommentController@store')->name('storeComment');

CommentController:

public function store(Request $request) {
    $id = $request->input('id');
    $type = $request->input('type');
    $text = $request->input('text');

    $comment = new Comment();
    $comment->client_id = $id;
    $comment->type = $type;
    $comment->text = $text;
    $comment->created_by = $request->user()->first_name.' '.$request->user()->last_name;
    $comment->save();
return response()->json(['success'=>'Success']);
}

HTML:

<form class="form-horizontal" method="POST" action="{{route ('storeComment')}}">
    {{ csrf_field() }}
    <input id="hidden-id" type="hidden" name="id" value="{{$id}}">
    <div class="form-group">
        <label class="col-md-4 control-label" for="commentSelect">Comment type</label>
    <div class="col-md-6">
        <select id="slect-comment-type" name="type" class="form-control">
            <option value="Call">Call</option>
            <option value="Mail">Mail</option>
        </select>
    </div>
    </div>
    <div class="form-group{{ $errors->has('comment') ? ' has-error' : '' }}">
        <label for="comment" class="col-md-4 control-label">Comment</label>
    <div class="col-md-6">
        <textarea name="text" class="form-control" rows="5" id="comment"></textarea>
        @if ($errors->has('comment'))
        <span class="help-block">
        <strong>{{ $errors->first('comment') }}</strong>
        </span>
        @endif
    </div>
    </div>
    <div class="form-group">
    <div class="col-md-6 col-md-offset-4">
        <button type="submit" class="btn btn-primary btn-sm save-comment">Save</button>
    </div>
    </div>
</form>

enter image description here

Ответы [ 3 ]

0 голосов
/ 06 июля 2018

Укажите идентификатор store_comment_form для формы, а затем:

$('#store_comment_form').on('submit',(function(e){

                e.preventDefault();
                var data = new FormData(jQuery('#store_comment_form')[0]);
                $.ajax({
                    url:"{{url('/comments/store')}}",
                    type:'POST',
                    data: data,
                    success:function(response){

                    }
                });
            }));
0 голосов
/ 08 июля 2018

Решено с помощью "/"

$.post("/storeComment", { id: id, type: type, text: text })
    .done(function(data) {
    console.log(data);
    alert("Success");
    $("#add-comment").css("display", "none");
    })
0 голосов
/ 06 июля 2018
$.post("comments/store", { id: id, type: type, text: text })
    .done(function(data) {
    console.log(data);
    alert("Success");
    $("#add-comment").css("display", "none");
    })
    .fail(function() {
    alert("Fail");
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...