Kazzi писал(а): ↑2020.06.24, 23:34
Всем добра.
Вот такой код по сути должен вывести мне алертом id из переменной. Однако в итоге выводится весь html страницы.
Код: Выделить всё
$('.to-cart').on('click', function(e){
e.preventDefault();
var id = $(this).data('id');
$.ajax({
url: '/cart/add',
data: {id: id},
type: 'GET',
success: function(res){
alert(res);
},
error: function(){
alert('Error');
}
});
});
А вот ссылка:
Код: Выделить всё
<a href="<?= Url::to(['cart/add', 'id' => $product['id']]) ?>" data-id="<?= $product['id']; ?>" class="to-cart"><i class="fas fa-cart-plus"></i></a>
Что я не так делаю?
А я бы сказал, что использование ajax в данном случае не по-назначению.
Код: Выделить всё
$('.to-cart').on('click', function(e){
console.log($(this).data('id'));
});
В консольных логах должно выдать идентификатор нужный.
Ajax можно использовать по разному, но никак не узнавать информацию из ссылки, которая уже есть на представлении.
В контроллере
Код: Выделить всё
if(\Yii::$app->request->isAjax){
return $this->renderAjax('_ajaxview', [
'params' => $params,
]);
}
Внутрь представления передаем что хотим и переотрисовываем блок, в который возвращаем то, что было в renderAjax
Вот такая вещь примерно в представлении может быть
Код: Выделить всё
<div id="message"></div>
<?php
$js = "
$(document).ready(function(){
$('#likes').on('click', function(e){
$.ajax({
type: 'POST',
url: '".$model->news_url."',
success: function(result) {
$('#message').html(result);
}
});
});
});
";
$this->registerJs($js);
?>
По итогу в диве с айди
message будет отрисован файл
_ajaxview
Подставив только свои значения
URL, params и т.п.