Я использую laravel 5.4, и я хочу создать AJAX, который может отправлять данные на сервер, но я получил это сообщение об ошибке
Не удалось загрузить ресурс: сервер ответил статусом 500 (внутренняя ошибка сервера)
https://i.stack.imgur.com/gjIbU.png
Вот мой AJAX
$('#testAjax').on('click',function(){
$.post('{{ route('edit') }}',{body:'string',_token:'{{ Session::token() }}'},function(data){
console.info(JSON.stringify(data));
});
});
Мои маршруты
Route::post('/edit',[ 'uses'=>'AjaxController@getProfessions', 'as'=>'edit']);
Мой Контроллер
public function getProfessions(Request $request)
{
$this->validate($request, [
'body' => 'required'
]);
$p = profession::where('categories_id'=>$request['postId']);
return response()->json(['new_body' => 'Server'], 200);
}
В настоящее время мне нужен только ответ «Сервер» от сервера, а не «строка» от ajax сам, поэтому я знаю, что он исходит с сервера
@WalterCejas Не удалось загрузить ресурс: сервер ответил статусом 500 (внутренняя ошибка сервера)
В 90 процентах случаев вы можете найти полную ошибку, контроллер и строку в вашем .log файле в хранилище / журналах, или также щелкнув запрос в сети, просмотрев вкладку предварительного просмотра или ответа ..






Во-первых, хорошие практики в Laravel показывают, что мы должны использовать первую букву названия модели с заглавной буквы, возможно, это ваша проблема. Попробуй его поменять.
Profession::where...
Во-вторых, вы не обрабатываете ответ об ошибке, вам следует добавить в свой Javascript функцию для ее обработки, например:
error: function(data) {
console.info(data)
}
В-третьих, вы пытаетесь получить postId из запроса, но не отправляете его.
Пожалуйста, измените свой код и сообщите нам результат.
Вы неправильно используете $ .post, попробуйте следующее:
$.post( "{!! route('edit') !!}", { body:'string',_token: {!! Session::token() !!} })
.done(function( data ) {
console.info(JSON.stringify(data));
});
в вашем маршруты / web.php
Route::post('/edit','AjaxController@getProfessions')->name('edit');
в вашем контроллере:
use Illuminate\Support\Facades\Validator;
public function getProfessions(Request $request)
{
try {
$validator = Validator::make($request->all(), [
'postId' => 'required',
'body' => 'required'
]
);
if ($validator->fails()) {
$response=array('status'=>'error','errors'=>implode(',', $validator->errors()->all()));
return response()->json($response, 200);
}else{
$profession = Profession::where(['categories_id'=>$request->input('postId')])->first();
if ($profession){
$profession->body=$request->input('body');
$profession->save();
return response()->json(['profession'=>$profession], 200);
}else{
$response=array('status'=>'error','errors'=>'profession not found');
return response()->json($response, 200);
}
}
}catch(\Exception $e){
$response=array('status'=>'error','errors'=>'Internal Server Error');
return response()->json($response, 500);
}
}
в окне редактирования лезвия вы передаете $ Professional для просмотра, затем:
<meta name = "csrf-token" content = "{{ csrf_token() }}" />
<form>
<input type = "hidded" id = "postID" name = "postID" value = "{{$profession->postID}}" />
<input type = "text" id = "body" name = "body" value = "{{$profession->body}}" />
<button type = "button" id = "testAjax">Submit using AJAX</button>
</form>
в вашей функции ajax:
$('#testAjax').on('click',function(){
var postID=$('#postID').val();
var body=$('#body').val();
$.ajax({
url:"{{ route('edit')}}",
headers: {'X-CSRF-TOKEN': $('meta[name = "csrf-token"]').attr('content')},
type:"POST",
dataType:"json",
data:{
postId:postID,
body:body,
},
success:function(response){
console.info(response);
},
error:function(err){
}
});
});
Привет, Мартин, что за сообщение об ошибке