Отправить форму laravel с помощью AJAX
Я пытаюсь добавить комментарий с помощью технологии AJAX, но у меня есть ошибка:
Failed to load resource: http://localhost:8888/blog/public/comment/add the server responded with a status of 500 (Internal Server Error)
Вот мой код:
Вид:
{{ Form::open(array('method'=>'post','class'=> 'col-md-6','url' => '/comment/add', 'id'=>'comment')) }}
<input type="hidden" name="post_id" value="{{$id}}">
<div class="row">
<div class="inner col-xs-12 col-sm-12 col-md-11 form-group">
{{Form::label('name', 'Imię')}}
{{Form::text('username', null, array('class'=>'form-control', 'id'=>'name', 'name'=>'name'))}}
</div>
<div class="inner col-xs-12 col-sm-12 col-md-12 form-group">
{{Form::label('message', 'Wiadomość')}}
{{Form::textarea('message', null, array('class'=>'form-control', 'id'=>'message', 'name'=>'message', 'rows'=>'5'))}}
</div>
</div>
<div class="row">
<div class="col-xs-12 col-md-12 submit form-group">
{{Form::submit('Wyślij', array('name'=>'submit', 'class'=>'btn btn-orange'))}}
</div>
</div>
{{ Form::close() }}
2 ответов
вы не публикуете никаких данных,
$.ajax({
type: "POST",
url: host+'/comment/add',
}).done(function( msg ) {
alert( msg );
});
ошибка, которую вы получаете, заключается в том, что столбцы в DB не могут быть null.
попробуйте изменить вызов ajax на это:
$.ajax({
type: "POST",
url: host+'/comment/add',
data: { name:name, message:message, post_id:postid },
success: function( msg ) {
alert( msg );
}
});
изменить это
var name = $(this).find('input[name=name]').val();
to
var name = $('#name').val();
и получить сообщение и идентификатор сообщения:
var message = $('#message').val();
var postid = $('#post_id').val();
полный блок ajax:
$('#comment').on('submit', function(e) {
e.preventDefault();
var name = $('#name').val();
var message = $('#message').val();
var postid = $('#post_id').val();
$.ajax({
type: "POST",
url: host+'/comment/add',
data: {name:name, message:message, post_id:postid}
success: function( msg ) {
alert( msg );
}
});
});
и, наконец, добавьте идентификатор в скрытый поле:
<input type="hidden" name="post_id" id="post_id" value="{{$id}}">
отправьте данные назад от регулятора Laravel, например.
// ........
$response = array(
'status' => 'success',
'msg' => 'Setting created successfully',
);
return Response::json($response); // <<<<<<<<< see this line
}else{
return 'no';
}
}
это отправит данные в вашем ответе обратно на ваш запрос ajax.
затем измените функцию успеха ajax:
// .......
success: function( msg ) {
$("body").append("<div>"+msg+"</div>");
}
// ..........
теперь вы увидите, что новый div был создан в вашем <body>
включая созданный ответ. Если вы хотите показать вновь созданный пост, просто создайте его как ответ ajax и добавьте его к любому элементу в своем страница.
просто изменение блока ajax ответ баао. Можно передавать данные как сериализованные.
$('#comment').on('submit', function(e) {
e.preventDefault();
$.ajax({
type: "POST",
url: host+'/comment/add',
data: $(this).serialize(),
success: function(msg) {
alert(msg);
}
});
});
все значения полей формы могут быть переданы с помощью