Я создаю игру с 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 форм отправляются или одна форма отправляется несколько раз.
Любое тело можете мне помочь?