Ich habe eine harte Zeit, die versucht, einen Blogbeitrag mit neuen Anmerkungen on the fly unter Verwendung jquery zu aktualisieren. mein html gesetzt als:finde Kindelement von div mit jquery und aktualisiere das 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>
und dies der jquery:
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();
});
});
});
Letztere resultStr im <p>
Element auf der Seite mit class="card-text new_comment_{{$i->id}}"
aber es passiert nichts, wenn ich für den neuen Beitrag einreichen klicken einfügen sollte . a console.log(data);
zeigt den Post, der übergeben wird, also ist es kein Controller-Problem, sondern dieser jquery-Code.
einige Änderungen vorgenommen, überprüfen Sie die ursprüngliche Frage. Funktioniert immer noch nicht. – Chriz74
danke, ich merkte nicht, dass ich mit der id rumgefummelt habe. Wie für die ID was wenn ich dann Kommentare löschen möchte? Ich muss diese nach IDs in der Datenbank identifizieren. – Chriz74
Normalerweise setze ich die ID der Datenbankzeile in ein 'data-XXX' Attribut. – Barmar