Я застрял в этой проблеме на два дня. У меня нет ни одного эксперта с ajax laravel. Мне не удается отправить данные в файл контроллера из ajax. Если кто-нибудь, пожалуйста, помогите мне. Я буду благодарен.
Вот маршрут
Route::get('/',"PostController@index");
Route::post('addpost','PostController@addpost');
Вот форма
<form>
{{csrf_field()}}
<label for = "title">Title</label>
<input type = "text" name = "title"><br>
<label for = "body">Body</label>
<textarea row= "6" name = "body"></textarea><br>
<button class = "btn btn-info" name = "submit" id= "add" type = "submit" value = "submit">Add</button>
</form>
Вот код jquery.
<script>
$(document).ready(function(){
$("#add_new_post").hide();
$("#newpost").click(function(){
$("#add_new_post").show();
$(this).hide();
});
$("form").on('#submit', function(event){
event.preventDefault();
$.ajax({
type : 'POST',
url : "{{url('/addpost')}}",
data :{
'_token': $('input[name=_token]').val(),
'title': $('input[name = title]').val(),
'body' : $('input[name = body]').val(),
},
success: function(data){
alert("Test Completed")
window.location.href = "{{('/home')}}";
},
});
});
});
</script>
Вот код контроллера БД не получает данные.
public function addpost(Request $request){
$data=array();
$data['title'] = $request->title;
$data['body'] = $request->body;
Post::insert(array('title'=>$data['title'],'body'=>$data['body']));
}
есть ли ошибка, которую вы получаете?
Вы пропустили: $post->save(); в конце контроллера

Обновленный скрипт
on('submit', или on('#submit'? это должен быть on('submit',
<script>
$(document).ready(function(){
$("#add_new_post").hide();
$("#newpost").click(function(){
$("#add_new_post").show();
$(this).hide();
});
$(document).on('click', '#add', function(event){
event.preventDefault();
$.ajax({
type : 'POST',
url : "{{url('/addpost')}}",
data :{
'_token': $('input[name=_token]').val(),
'title': $('input[name = title]').val(),
'body' : $('input[name = body]').val(),
},
success: function(data){
alert("Test Completed")
window.location.href = "{{('/home')}}";
},
});
});
});
</script>
Контроллер
public function addpost(Request $request){
$post = new Post();
$post->title = $request->title;
$post->body = $request->body;
$post->save();
}
Вы правы, но БД не получает данные. У меня новая модификация в controller.public function addpost(Request $request){ $data=array(); $data['title'] = $request->title; $data['body'] = $request->body; Post::insert(array('title'=>$data['title'],'body'=>$data['body'])); }
попробуй этот public function addpost(Request $request){ $post = new Post(); $post->title = $request->title; $post->body = $request->body; $post->save(); }
у вас есть модель Post?
Я обновил свой код javascript. Пожалуйста, проверьте обновленный код.
Ваше событие неверно:
$("form").on('#submit', function(event){});
Использовать :
$("form").on('submit', function(event){});
или
Событие $(document).on('click',"#app",function(e){e.preventDefault();//prevent submit});
или использовать
<button type = "button"> & $(document).on('click',"#app",function(){});
Также добавьте: $post->save(); конец контроллера
используйте $("form").on('submit', function(event){}); вместо $("form").on('#submit', function(event){});
on('submit',илиon('#submit'? это должен бытьon('submit',