jqueryを使用して新しいコメントをブログ投稿に更新しようとしています。 jqueryのjqueryでdivの子要素を見つけてhtmlを更新します
<div class="card-block" id="comments_{{$i->id}}">
<p class="card-text"><a href="#">{{$i->user->username}}</a> {{$i->description}}</p>
<hr>
<div class="card_block">
<form id="post_{{$i->id}}" class="dynamic-form" style="display:none" method="post" action="/comment/add">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<input type="hidden" name="post_id" value="{{ $i->id }}">
<div class="form-group" id="DynCommentInput">
<textarea required="required" placeholder="Enter comment here" name="body" class="form-control"></textarea>
</div>
<input type="submit" name='post_comment' class="btn btn-success" value="Post"/>
</form>
</div>
<p class="card-text new_comment_{{$i->id}}" style="display:none"></p>
@if($i->comments)
@foreach($i->comments as $c)
<p class="card-text"><a href="#">{{$c->author->username}}</a> {{$c->body}}</p>
@endforeach
@endif
</div>
と、この:
jQuery(function ($) {
$(document).ready(function() {
$("body").on("submit", ".dynamic-form", function (e) {
var id = $(this).attr('id');
var new_comment_id = '.new_comment_' + id;
var comments_id = '#comments_' + id;
var form = $(this);
$.ajax({
url: form.prop('action'),
type: 'post',
dataType: 'json',
data: $(this).serialize(),
success: function (data) {
var resultStr = "";
resultStr = resultStr + "<a href=\"#\"><\/a>" + data.body ;
console.log(resultStr);
$(comments_id).find(new_comment_id).html(resultStr).slideToggle(150).promise().done(function() {
$(new_comment_id).fadeIn("fast");
});
}
});
e.preventDefault();
});
});
});
後者はclass="card-text new_comment_{{$i->id}}"
とページ内<p>
要素でresultStrを挿入する必要がありますが、私は新しいポストのために提出]をクリックすると何も起こりません、私のHTMLは次のように設定されています。 console.log(data);
は、渡されたポストを示しているので、コントローラーの問題ではなくそのjqueryコードです。
は、いくつかの編集をした、元の質問をご確認ください。まだ動作しません。 – Chriz74
おかげさまで、私はイドをつぶしていたことに気づいていませんでした。 idについては、コメントを削除したいのですが? db内のIDで識別する必要があります。 – Chriz74
私は通常、データベースの行IDを 'data-XXX'属性に入れます。 – Barmar