Soumettre le formulaire laravel à l'aide d'AJAX
Je suis en train d'ajouter un commentaire en utilisant la technologie AJAX, mais j'ai une erreur:
Failed to load resource: http://localhost:8888/blog/public/comment/add the server responded with a status of 500 (Internal Server Error)
Voici mon code:
Vue:
{{ 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() }}
Contrôleur:
public function addComment()
{
$this->layout = null;
//check if its our form
if(Request::ajax()){
$name = Input::get( 'name' );
$content = Input::get( 'message' );
$comment = new Comment();
$comment->author = $name;
$comment->comment_content = $content;
$comment->save();
$postComment = new CommentPost();
$postComment->post_id = Input::get('post_id');
$postComment->comment_id = Comment::max('id');
$postComment->save();
$response = array(
'status' => 'success',
'msg' => 'Setting created successfully',
);
return 'yea';
}else{
return 'no';
}
}
AJAX:
jQuery( document ).ready( function( $ ) {
$( '#comment' ).on( 'submit', function(e) {
e.preventDefault();
var name = $(this).find('input[name=name]').val();
$.ajax({
type: "POST",
url: host+'/comment/add',
}).done(function( msg ) {
alert( msg );
});
});
});
Et le dernier routes:
Route::post('comment/add', 'CommentController@addComment');
Quelqu'un a une idée de l'endroit où est le problème et pourquoi je ne peux pas soumettre mon formulaire?
la valeur de l'hôte en javascript ?
Une erreur 500 signifie qu'il serait utile d'erreur message dans votre Laravel journal. Vérifier là.
Vous n'avez pas besoin de l'hôte, il suffit de l'essayer comme url: '/commentaire/ajouter"
avez-vous vérifié laravel journal ?
<script> var host = "{{URL::to('/')}}"; </script>
de sorte qu'il a http://localhost:8888/blog/public
Une erreur 500 signifie qu'il serait utile d'erreur message dans votre Laravel journal. Vérifier là.
Vous n'avez pas besoin de l'hôte, il suffit de l'essayer comme url: '/commentaire/ajouter"
avez-vous vérifié laravel journal ?
OriginalL'auteur Zobo | 2014-12-07
Vous devez vous connecter pour publier un commentaire.
Vous n'êtes pas poster toutes les données,
L'erreur que vous obtenez est que les colonnes en DB ne peut pas être null.
Essayez de changer votre appel ajax:
Modifier cette
à
et extraire le message et l'id de la poste:
Complète ajax bloc:
Et enfin, ajouter un ID pour le champ caché:
Envoyer des données à l'arrière de Laravel contrôleur, par exemple.
Cela va envoyer les données dans votre réponse à votre requête ajax.
Ensuite, modifier votre ajax succès fonction:
Maintenant, vous pouvez voir qu'un nouveau div a été créé dans votre
<body>
y compris la création de réponse. Si vous souhaitez afficher le poste nouvellement créé, il suffit de créer comme l'ajax réponse et l'ajouter à n'importe quel élément dans votre page.Parce que vous ne transmettre les données au contrôleur, si vous voulez voir le nouveau commentaire directement, vous devez envoyer à votre requête ajax, de l'attraper dans la réussite de la fonction et de sortie. J'éditerai mon post avec un petit exemple, je suis sûr que vous allez comprendre avec ça, donnez-moi une seconde. @Zobo . Veuillez accepter la réponse si elle vous a aidé
J'ai édité. @Zobo essayer si vous avez du succès, si non, n'hésitez pas à demander de nouveau!
Ok, je l'ai mais j'ai une autre question. C'est mon SinglePostController pastebin.com/jfKU1dKy lorsque j'ai des relations entre les commentaires et unique post. Comment puis-je envoyer à ajax le contenu de l'ajout de commentaires et d'ajouter +1 pour les commentaires appartiennent à ce poste?
Une option serait de renvoyer les valeurs des Input::get('/.....') et, c'est le nouveau post. Si vous avez besoin de postes qui ne sont pas par le même utilisateur, il suffit d'ajouter la db requête à partir d'un autre contrôleur de celui que vous appelez avec votre ajax et envoyer les données comme votre réponse (dans les deux scénarios)
OriginalL'auteur bambam
Seulement la modification de l'ajax bloc de baao réponse. Vous pouvez transmettre des données sérialisées.
Toutes les valeurs de champ de formulaire peut être transmis à l'aide de la
serialize()
fonction.OriginalL'auteur aiswarya