Проблема с регистрационной формой в php: laravel - PullRequest
0 голосов
/ 29 марта 2020

Я создаю игру с Laravel, в которую могут играть несколько пользователей. Я использовал Java script для отправки пользователей forms, когда что-то произошло в database.

Js кодах:

jQuery(document).ready(function ($) {

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

    var intervalID = window.setInterval(myCallback, 1000);

    function myCallback() {

        $.ajax({
            url: '/games/stop',
            type: 'post',
            dataType: 'json',
            data: {
                room_id: 5
            },
            success: function (response) {
                if (response.success) {
                    document.getElementById("gameForm").submit();
                }
            },
            error: function () {
            }
        });

    }
});

Html коды формы:

<form id="gameForm" action="{{ route('frontend.store') }}" method="post">
    {{ csrf_field() }}
    <input id="game_first_name" placeholder="name" type="text"
           name="game_name">
    <input id="game_last_name" placeholder="last" type="text"
           name="game_last">
    <button type="submit">Stop</button>
</form>

Laravel коды:

public function stop(Request $request)
{
    $room = Room::find($request->input('room_id'));
    if ($room) {
        if ($room->status == Room::STOP) {
            return [
                'success' => true,
                'message' => 'reload'
            ];
        }
        return [
            'success' => false,
            'message' => 'error'
        ];
    }
}



public function store(Request $request)
    {
        $roomUser = RoomUser::where('status', RoomUser::ALLOWED)->where('user_id', Auth::user()->id)->get()->first();
        $room = Room::find($roomUser->room_id);

        if ($room->status != Room::STOP) {
            $room->update([
                'status' => Room::STOP
            ]);

        }

        $new_paper = Paper::create([
            'room_user_id' => $roomUser->id,
            'status' => Paper::PENDING,
            'char' => $room->char,
            'name' => $request->input('game_name'),
            'last' => $request->input('game_last')
        ]);

        if ($new_paper) {
            return redirect()->route('frontend.open', [$roomUser->room_id]);
        }

    }

Когда один пользователь отправляет свою форму, остальные пользователи отправляют свои формы автоматически.

Но проблема в : иногда 2 из 3 или 1 из 3 или 4 форм отправляются или одна форма отправляется несколько раз.

Любое тело можете мне помочь?

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