У меня есть приложение Laravel, которое прекрасно работает локально, но каждый вызов AJAX возвращает 404 при размещении.Я не уверен, что это из-за ошибки конфигурации сервера, отсутствующего параметра php.ini или чего-то еще?Я включил пример сбоя вызова.
AJAX / JQ:
var url = "/final-review";
$("#review_note_text").change(function(){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
}
});
$('#review_note_loader').show();
var formData = {
note_text: $('#review_note_text').val(),
};
var type = "POST";
var reviewNoteUrl = url + '/review-note';
$.ajax({
type: type,
url: reviewNoteUrl,
data: formData,
dataType: 'json',
success: function (data) {
$('#failure-message-review').hide();
$('#success-message-review p').html("Saved successfully" + '<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>');
$('#success-message-review').show();
$('#review_note_loader').removeClass("halted-loader").hide();
},
error: function (data) {
$('#review_note_loader').addClass("halted-loader");
$('#failure-message-review p').html("Something went wrong, your record was not updated. <strong>Error Code: " + data.status + "</strong>" + '<a href="#" class="close" data-dismiss="alert" aria-label="close">×</a>');
$('#failure-message-review').show();
}
});
});
Мой соответствующий маршрут:
Route::post('final-review/review-note', 'FinalReviewController@update_review_note');
КонтроллерФункция
public function update_review_note(Request $request){
$validatedData = $request->validate([
'note_text' => 'nullable|string',
]);
$note = \App\ReviewNote::create([
'note_text' => $request->get('note_text'),
'author' => Auth::user()->name,
'created_at' => now()
]);
return Response::json($note);
}
РЕШЕНО:
Мне пришлось изменить переменную "url" в моем шаблоне лезвия на: var url = "{{ url('/final-review') }}";
Inмой AJAX я определял "url" как "/ final-review", что привело к маршруту "foobar.com/final-review/params", что мне действительно нужно было "foobar.com/app-name/final-review/params".
Локальное тестирование. У меня не было «app-name» в моем URL.