Почему не работает скрипт пост-обновления Ajax? - PullRequest
0 голосов
/ 13 июля 2020

Написал небольшой скрипт для редактирования поста, в принципе все работает, кроме обновления картинки и не понимаю в чем причина. Без Ajax все работает как надо. Я попытался посмотреть, какие formData покажет мне через console.log и alert, он показывает все данные, кроме изображения

$("document").ready(function() {
        $("#editPostButton{{$post->id}}").click(function() {

            var formData = $("#EditPostForm{{$post->id}}").serialize();

            $.ajax({
                url: "{{route('editPost', ['id' => $user->id, 'postId' => $post->id])}}",
                type: "POST",
                data: formData,
                success: function(data) {
                    $("#textpostdata{{$post->id}}").html($(data).find("#textpostdata{{$post->id}}").html());
                    $("#closeButton{{$post->id}}").click();
                }
           });

        });
    });

Сама форма

<form action="{{route('editPost', ['id' => $user->id, 'postId' => $post->id])}}" method="post" enctype="multipart/form-data" id="EditPostForm{{$post->id}}" name="postForm">
@csrf @method('PATCH')
<div class="form-group">
    <textarea maxlength="100" name="title" class="form-control" rows="1">{{$post->title}}</textarea>
</div>
<div class="form-group">
    <textarea id="message" maxlength="5000" name="message" class="form-control" rows="10">{{$post->message}}</textarea>
</div>
<div class="form-group">
    <textarea maxlength="100" class="form-control mt-1" id="videoPost" name="videoPost" cols="100" rows="1">{{$post->videoPost}}</textarea>
</div>
<h6>Current image</h6>
<img src="{{$post->img}}" class="img-fluid mb-2" width="230">
    <div class="form-group">
        <input type="file" id="img" name="img" accept="image/*">
    </div>

<button type="button" class="btn btn-sm btn-primary" id="editPostButton{{$post->id}}">Edit</button>

Ответы [ 2 ]

1 голос
/ 13 июля 2020

необходимо настроить Ajax CSRF, например:

        $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
1 голос
/ 13 июля 2020

Необходимо передать CSRF от ajax:

$("document").ready(function() {
        $("#editPostButton{{$post->id}}").click(function() {

            var formData = $("#EditPostForm{{$post->id}}").serialize();

            $.ajax({
                headers: {
                        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
                 },
                url: "{{route('editPost', ['id' => $user->id, 'postId' => $post->id])}}",
                type: "POST",
                data: formData,
                success: function(data) {
                    $("#textpostdata{{$post->id}}").html($(data).find("#textpostdata{{$post->id}}").html());
                    $("#closeButton{{$post->id}}").click();
                }
           });

        });
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...