我有一个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') }}";
在我的AJAX中,我将“ url”定义为“ / final-review”,这导致出现“ foobar.com/final-review/params”路由,而我真正需要的是“ foobar.com/app-name” / final-review / params”。
在本地测试,我的URL中没有“ app-name”。