Friday, February 23, 2024
 Popular · Latest · Hot · Upcoming
75
rated 0 times [  78] [ 3]  / answers: 1 / hits: 104757  / 9 Years ago, sun, december 7, 2014, 12:00:00

I am trying to add comment using AJAX technology but I have an error:
Failed to load resource: http://localhost:8888/blog/public/comment/add the server responded with a status of 500 (Internal Server Error)
Here is my code:
View:



{{ 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() }}


Controller:



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 );
});

});
});


And the last one routes:



Route::post('comment/add', 'CommentController@addComment');


Anyone have an idea where is the problem and why I can't submit my form?


More From » php

 Answers
4

You are not posting any data,



    $.ajax({
type: POST,
url: host+'/comment/add',
}).done(function( msg ) {
alert( msg );
});


The error you are getting is that the columns in DB cannot be null.



Try to change your ajax call to this:



    $.ajax({
type: POST,
url: host+'/comment/add',
data: { name:name, message:message, post_id:postid },
success: function( msg ) {
alert( msg );
}
});


Change this



var name = $(this).find('input[name=name]').val();


to



var name = $('#name').val();


and fetch the message and the post id:



var message = $('#message').val();
var postid = $('#post_id').val();





Complete ajax block:



   $('#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 );
}
});
});


And finally, add an ID to the hidden field:



<input type=hidden name=post_id id=post_id value={{$id}}>





Send data back from Laravel controller, eg.



    // ........

$response = array(
'status' => 'success',
'msg' => 'Setting created successfully',
);
return Response::json($response); // <<<<<<<<< see this line
}else{
return 'no';
}
}


This will send the data in your response back to your ajax request.



Then, alter your ajax success function:



 // .......
success: function( msg ) {
$(body).append(<div>+msg+</div>);
}

// ..........


You will now see that a new div was created in your <body> including the created response. If you want to show the newly created post, just create it as the ajax response and append it to any element in your page.


[#68553] Friday, December 5, 2014, 9 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
aileenreynap

Total Points: 140
Total Questions: 106
Total Answers: 99

Location: Andorra
Member since Sun, Oct 18, 2020
3 Years ago
;