Вот уже вторые сутки бьюсь с этим аяксом, получилось вот что:
Есть блок, который при нажатие на ссылку раскрывается скратким описанием новости, и ниже есть кнопка подробнее.
<td>
<?= Html::a($item->title, 'javascript:show("newsid", ' . (int)$item->link . ')') ?>
</td>
<tr>
<td>
<div style="display:none" id="newsid_<?= (int)$item->link ?>">
<?= $item->description ?>
<?= Html::a('подробнее', ['/site/default/footballnews', 'id'=>(int)$item->link], [
'id' => 'link_fnews',
'class' => 'btn btn-small',
'data' => [
'data-method' => 'post',
],
]) ?>
</div>
</td>
при нажатие подробнее срабатывает функция JS
<?php
$js = "$('#link_fnews').on('click', function(e)
{
e.preventDefault();
var link = $(this).attr('href');
var id = link.split('?id='); // парсю строку и получаю чистый ID новости
$('#link_fnews').html('<i class=\"fa fa-spinner fa-pulse\"></i>'); // здесь гружу анимацию(loading)
$.post
(
link,
function(data)
{
$('#link_fnews').html(''); // убираю анимацию
$('#newsid_'+id[1]).append(data) // грузим новость в блок с айди новостью
}
);
}
)";
$this->registerJs($js, $this::POS_READY);
?>
в контроллере я получаю новость по айди и возвращаю ее echo $content;
Если я запрашиваю первую новость, то все хорошо, все как надо, а если любую другую то меня кидает на станицу /site/default/footballnews?id=379255 и там текст новости, почему это происходит? как исправить
и второй вопрос, можно ли оптимизировать мой код?