Если всё вместе, вот так:
/catalog/controller/product/product.php
public function prod() {
$json = array();
$json['prod_id'] = $this->request->get['product_id'];
$this->response->addHeader('Content-Type: application/json');
$this->response->setOutput(json_encode($json));
}
/risaler.ru/catalog/view/theme/default/js/common.js
var prodpopup = {
'prod': function(prod_id) {
$.ajax({
url: 'index.php?route=/product/product/prod',
type: 'post',
data: prod_id,
dataType: 'json',
success: function(json) {
console.log(json['prod_id']);
},
});
}
}
и на фортэнде
onclick="prodpopup.prod('64');"
Если в /catalog/controller/product/product.php сделать так:
public function prod() {
if (isset($this->request->get['product_id'])) {
$product_id = (int)$this->request->get['product_id'];
} else {
$product_id = 0;
}
$json = array();
$json['prod_id'] = (int)$this->request->get['product_id'];;
$this->response->addHeader('Content-Type: application/json');
$this->response->setOutput(json_encode($json));
}
То 0 выведется, а вот метод $this->request->get['product_id']; не видит.
Может ерунду предположу, но не может ли это быть связано, с тем, что класс ControllerProductProduct, расширяет Controller, а так как у родительского класса метод prod не определён, то и данные тянуть неоткуда? Я правда понятия не имею где родительский Controller вообще описан и как он устроен.
Функция prod() на одном уровне с остальными: