Я разрабатываю функцию, для которой требуется запрос Ajax. Сначала я открываю модальное окно, нажимая кнопку с классом '.open-email-modal'
. И после этого он открывает модальное поле, в котором имеется 2 поля для ввода значений для регистра, а под ним - таблица. При первом открытии модального режима все происходит нормально, регистр с вызовом запроса Ajax проходит через контроллер и возвращает в ответ значение, зарегистрированное в соответствующем токене. Ниже приведены коды, которые я разработал. (Я использую Laravel).
Это модальный код.
<div class="col-md-4">
<div class="modal fade" id="emailModal" tabindex="-1" role="dialog" aria-labelledby="modal-form" aria-hidden="true">
<div class="modal-dialog modal- modal-dialog-centered modal-lg" role="document">
<div class="modal-content">
<div class="modal-body p-0">
<div class="card bg-secondary shadow border-0">
<div class="card-header bg-transparent pb-4">
<div class="text-muted text-center mt-2 mb-3 text-uppercase"><h1>Adicionar Email</h1></div>
<div class="text-center text-muted mb-4">
<small> Preencha os campos dos emails </small>
</div>
</div>
<div class="card-body px-lg-5 py-lg-5">
<form id="emailModalProspect" method="post" action="{{ route('prospectEmails.store') }}">
@csrf
{{ method_field('post') }}
<input hidden name="prospect_id" id="prospect_id_email" type="text">
<div class="form-group mb-3">
<label class="form-control-label" for="prospect-email-name">{{ __('Nome') }}</label>
<div class="input-group input-group-alternative">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fas fa-user"></i></span>
</div>
<input class="form-control" id="prospect-email-name" name="name" placeholder="Digite o nome do proprietário do email" type="text" required>
</div>
</div>
<div class="form-group mb-3">
<label class="form-control-label" for="prospect-email-email">{{ __('Email') }}</label>
<div class="input-group input-group-alternative">
<div class="input-group-prepend">
<span class="input-group-text"><i class="ni ni-email-83"></i></span>
</div>
<input class="form-control" id="prospect-email-email" name="email" placeholder="Digite o email da empresa/cliente" type="email">
</div>
</div>
<div class="text-center">
<button type="submit" id="save-email" class="btn btn-primary my-4 store-email text-uppercase">Cadastrar email</button>
</div>
</form>
<div class="table-responsive ">
<table class="table align-items-center table-flush tablesorter-dropbox text-center" id="prospect-email-table">
<thead class="thead-light text-center" >
<tr class="text-center">
<th scope="col" class="text-center col-sm-2"><b>{{ __('Nome') }}</b></th>
<th scope="col" class="text-center col-sm-2"><b>{{ __('Email') }}</b></th>
<th scope="col" class="text-center col-sm-2"><b>{{ __('Opção') }}</b></th>
</tr>
</thead>
<tbody class="text-center" id="received-emails">
</tbody>
</table>
</div>
<div class="text-center">
<button type="button" class="btn btn-default my-4 text-uppercase" data-dismiss="modal">Fechar</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
Это код в JQuery, где он вызывает запрос Ajax.
$('.open-email-modal').on('click', function(e) {
e.preventDefault();
e.stopPropagation();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
let p = JSON.parse($(this).attr('data-entity'));
let modal = $('#emailModal');
let form = $('#emailModalProspect');
$('#prospect_id_email').val(p.id).change();
$('.store-email').on('click', function(b){
b.stopPropagation();
b.preventDefault();
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
let url = '{{route("prospectEmails.store")}}';
$.ajax({
url: url,
type: "POST",
data : form.serialize(),
async: false,
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
},
dataType: "json",
success:function(response) {
console.log(response);
showEmails(p.id);
}
});
});
if(p.id){
showEmails(p.id);
}
modal.modal({show : true});
});
Это код моего контроллера.
public function store(Request $request){
ProspectEmails::create(array_merge($request->all(), ['company_id' => Auth::User()->company_id], ['prospect_id'=>$request->prospect_id], ['tag'=>false]));
return Response()->json($request);
}
Проблема в том, что, как только я впервые открываюсь и регистрируюсь, все работает нормально. Но когда я закрываю модальное и снова открываю и регистрирую, возвращается тот регистр, который я сделал 2 раза без всякого токена. Закройте модальное снова и снова откройте и зарегистрируйте, и верните этот регистр 3 раза, без токена снова. showEmails - это функция, которая показывает регистрацию в таблице в обычном режиме, а также показывает повторные значения при каждой регистрации. Даже база данных показывает повторяющиеся значения, поэтому у меня есть подтверждение, что основная ошибка либо в моем модальном, либо в запросе Ajax с методом POST. Кто-нибудь может мне помочь?