Я пытаюсь оставить комментарий к сообщению, для этого я получил все сообщения.
У меня есть кнопка с именем Комментарий , которая, когда янажмите кнопку Я хочу получить текущий комментарий body
, post_id
и user_id
, чтобы сохранить их в таблице comments
.
здесь возникает проблема : когда я нажимаюна Комментарий для первого поста, комментарии body
, post_id
и user_id
загружаются совершенно нормально, и я предупреждал их раньше ajax запрос, они подходят для первого сообщения, но для оставшихся posts
, когда я нажимаю на кнопку Комментарий , я получаю id
первого сообщения * и ничего для комментария body
, даже когда я нажимаю кнопку Комментарий , отличную от первого сообщения, она возвращает id
первого сообщения.
Я использую Laravel, вот мой код:
Контроллер
Route::post('comment/{post_id}',[
'uses' => 'CommentController@storeComments',
]);
storeComments
Функция
public function storeComments(Request $request,Comment $body,$post_id){
if(!$request->ajax()){
$comment = new Comment;
$comment->user_id = Auth::user()->id;
$comment->post_id = $post_id;
$comment->body = Input::get('body');
$comment->save();
$response = array(
'status' => 'success',
'msg' => 'Setting created successfully',
);
return Response::json($response);
return 'yes';
}else{
return 'no';
}
}
Вот моя форма .Я использовал foreach
цикл, чтобы получить все посты и там внутри этого цикла, я использовал textarea
для комментария в следующей форме.
@foreach
<form action="{{ url('comment',$post->p_id) }}" method="POST" >
@csrf
<textarea
name="body"
placeholder="Write A Suggestion"
data-autosize-input='{ "space": 100 }'
rows="50" cols="100"
name="comment"
class="form-control comment body">
</textarea>
<input type="hidden" value="{{csrf_token()}}">
<!-- user Id of the logged In one -->
<input type="text" class="user_id" value="{{Auth::user()->id}}" name="user_id">
<!-- post id -->
<input type="text" class="post_id" name="post_id" value="{{$post->p_id}}">
<button type="button" class="btn btn-sm btn-danger formcomment" value = 'Comment' style="margin:10px;">Comment</button>
</form>
@endforeach
Вот Ajax Request
<!-- actuall here control does not comes okay -->
<script type="text/javascript">
$(document).ready(function(){
$('.formcomment').on('click', function(e) {
e.preventDefault();
// these are id's
var body = $('.body').val();
var post_id = parseInt($('.post_id').val());
var user_id = parseInt($('.user_id').val());
alert(body);
alert('this is post'+post_id);
alert('This is user id'+user_id);
$.ajax({
type: "POST",
url: '/comment',
data: {body:body, post_id:post_id, user_id:user_id},
success: function(msg) {
$("body").append("<div>"+msg+"</div>");
}
});
});
});
Примечание:
Я искал эту проблему, было предложено изменить id
на class
потому что в Jquery id's
должно быть уникальным для разных полей.
Поскольку форма находится внутри цикла @foreach
и поля различны для каждого поста.
Надеюсь, это имеет какой-то смыслЯ действительно старался изо всех сил, чтобы сделать это простым.
Я новичок в Laravel