Прежде всего, в предоставленном коде у вашего тега <form>
отсутствует атрибут действия для правильной работы кода.
Затем, чтобы ответить на ваш вопрос, измените действие вашего контроллера (которое сохраняет ваш новый комментарий), чтобы оно возвращало информацию из отправленного комментария (формат json лучше). Затем преобразуйте возвращенный json в html-код и добавьте результат к своим комментариям <div>
, например:
$(document).on("submit", ".postAjax", function(e){
e.preventDefault();
$(this).LoadingOverlay("show");
data = $(this).serializeObject();
var element = $(this);
$.ajax({
url: $(this).attr('action'),
type: 'POST',
success:function(newCommentData){
/* do some process here to transform your newCommentData array into html code */
$(element).next(".comments").append(newCommentData);
}
});
});
Кроме того, если вы хотите, чтобы он был чище, у вас может быть скрытый div, с той же моделью, что и div комментария, но с каждым содержимым, замененным шаблонами (например: %commentTitle%
, %commentBody%
). Затем каждый раз, когда вы публикуете новый комментарий, вы можете получить этот скрытый div
и заменить шаблоны данными вашего комментария. Таким образом, если вы измените структуру раздела комментариев позже, JS-скрипт будет работать так же, без каких-либо настроек.