Код фронт-контроллера
function actionIndex()
{
if ($this->isMyPost()){
$id = $this->url->request('id', TYPE_INTEGER);
$help = $this->url->request('help', TYPE_STRING);
if (!empty($id)) {
$api = new \Comments\Model\Api();
$api->markHelpful($id, $help);
}
if ($this->url->isAjax()) {
$this->result->checkAjaxOutput(true); // Форсим AJAX
$this->result->addSection('count', $this->$api->getUsefulCount());
}
}
return $this->result;
}
Код шаблона tpl
{addjs file="%comments%/vote.js"}
{foreach $commentlist as $comment}
<li {$comment->getDebugAttributes()}>
<div class="info">
<p class="starsSection"><span class="stars" title="{$comment->getRateText()}"><i class="mark{$comment.rate}"></i></span></p>
<p class="date">{$comment.dateof|dateformat:"@date @time"}</p>
<p class="name">{$comment.user_name}</p>
</div>
<div class="comment">
<i class="corner"></i>
<p>{$comment.message|nl2br}</p>
<div id="VoteMode">
{if $success}
{$success}
{/if}
{if $error}
{$error}
{/if}
<form action="{$router->getUrl('comments-front-help')}" method="POST" class="formStyle">
{$this_controller->myBlockIdInput()}
<input type="hidden" name="id" value="{$comment.id}">
<input type="submit" name="help" value="yes"/>
<input type="submit" name="help" value="no"/>
</form>
<div id="useful">
{$comment.useful}
</div>
</div>
</div>
</li>
{/foreach}
Код JS
$(function() {
$("body").on('submit', '#VoteMode form', function(){
var $_this = $("#VoteMode");
var data = $(this).serialize();
$.ajax({
type : 'POST',
url : $(this).attr('action'),
data : data,
dataType : 'json',
beforeSend: function() {
$('#useful').html('<i class="fa fa-spinner fa-spin fa-fw"></i>');
},
success : function(response){
$('#useful').html(response);
}
});
return false;
});
});
Функция в API
function getUsefulCount() {
$comment = new \Comments\Model\Orm\Comment();
$res = \RS\Orm\Request::make()
->select('useful AS count')
->from($comment)
->where(array('id' => $id))
->exec()->fetchRow();
return $res['count'];
}
Если без ajax при переходе на следующую страницу выводит значение useful. Но если подключаю ajax значение просто пропадает. Голову сломал не пойму что делаю не так.