Я работаю над системой тикетов, используя laravel 5.8 и ajax.
Проблема в; Каждый раз, когда пользователь нажимает «отправить заявку», ajax отображает сообщение в «успехе», но данные формы никогда не вставляются в базу данных.
Пожалуйста, как я могу решить эту проблему?
Ниже мой код.
Контроллер Laravel:
public function postCreateTicket (Request $request)
{
$validate = $this->validate($request, [
'subject' => 'required',
'message' => 'required'
]);
if ($validate)
{
$new_message = TicketMessage::create([
'ticket_subject_id' => $request->subject,
'investor_id' => $request->$this->investorID(),
'message' => $request->message,
]);
$send_status = $new_message->save();
if($send_status)
{
$message = 'Your ticket was successfully sent! We will get back to you in no time.';
return response()->json($message);
}else{
echo 'Error1';
}
}
}
HTML-код:
<form method="post" id="form-data">
@csrf()
<div class="form-group text-left x3-margin-top">
<label for="subject" class="grey normal x4-margin-left">Subject</label>
<select name="subject" id="subject" class="form-control input-lg x4-margin-left x9-width no-radius input grey">
<option value="" selected>Select Subject</option>
@foreach($ticket_subject as $ticket_subjects)
<option value="{{$ticket_subjects->id}}">{{strtoupper($ticket_subjects->subject)}}</option>
@endforeach
</select>
@if($errors->has('subject'))
<span class=" x4-margin-left x10-font-size maroon">{{$errors->first('subject')}}</span>
@endif
</div>
<div class="form-group text-left x3-margin-top">
<label for="message" id="message-label" class="grey normal x4-margin-left">Message</label>
<textarea name="message" id="message" cols="30" rows="15" class="form-control x4-margin-left x9-width"></textarea>
@if($errors->has('message'))
<span class="x4-margin-left x10-font-size maroon">{{$errors->first('message')}} </span>
@endif
</div>
<div class="form-group text-right x4-margin-top x6-margin-right">
<button class="btn btn-info btn-lg no-radius" id="submit" type="button">
Send Ticket <i class="fas fa-mail-bulk"></i>
</button>
</div>
</form>
Код Ajax:
<script type="text/javascript">
$(document).on('click', '#submit', function (e){
$.ajax({
type:'POST',
url : "{{route('ticket')}}",
data : {
_token: "{{csrf_token()}}",
ticket_subject_id: $('select[name=subject]').val(),
investor_id: "{{Auth::user()->investor_id}}",
message: $('textarea[name=message]').val()
},
dataType: 'text',
beforeSend: function(){$('#message-label').text('Sending..')},
success : function(data)
{
$('#message-label').text('Sent!');
$('.subject').text('');
$('.message').text('');
},
errors : function(data)
{
alert('failed');
}
});
});
</script>
Маршрут:
Route::get('/investor/dashboard/ticket/create/', array(
'as' => 'ticket',
'uses' => 'InvestorTicketController@getCreateTicket'
));
Route::post('/investor/dashboard/ticket/create/', [
'as' => 'ticket',
'uses' => 'InvestorTicketController@postCreateTicket'
]);