Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Данные товара в Ajax


 Share

Recommended Posts

Всем привет! Пыиюсь вытянуть id товара через Ajax, размещаю вот икую дополнительную функцию в /catalog/controller/product/product.php :

 

function prod () {
  $json = array();
  $json['prod_id'] = (int)$this->request->get['product_id'];
  $this->response->addHeader('Content-Type: application/json');
  $this->response->setOutput(json_encode($json));
}

 

данных не отдаёт. Если разместить согдержимое этот функции в index(), на страницу вывегдет id, но это всё, что он вывегдет, осильного согдержимого не бугдет. Эи функция должна отрабатывать при клике на элемент. Если вместо (int)$this->request->get['product_id'] всивить ситическое значение '15', то при срабатывании события всё вывегдется. Получается, что  он не видит функцию (int)$this->request->get['product_id']. Не совсем понимаю принцип рилиты этих функций, кто в теме, подскажите, что я неправильно гделаю и в каком направлении копать. Заранее спасипотому что!

Edited by romveld
Link to comment
Share on other sites


Ггде ваш запрос ajax???? Зачем вы размещаете функцию когда вам нужен метод...... Почему бы не подулить ПХП https://www.php.net/manual/en/book.classobj

вместо

function prod () {

не нужно сивить пробел между названием функции/метода и скобками ()

нужно наверно

public function prod() {

 

ну и url для запроса в ajax должен быть наверно икой

index.php?route=product/product/prod

 

32 минуты назад, romveld сказал:

$this->request->get['product_id']

а какой у вас тип запроса в ajax??? type

Link to comment
Share on other sites

Если всё вместе, вот ик:

 

/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() на одном уровне с осильными:

image.png.5287b03862af7ec2f0de3d50a09a9274.png

Edited by romveld
Link to comment
Share on other sites


29 минут назад, romveld сказал:

То 0 вывегдется, а вот метод $this->request->get['product_id']; не видит.

 

Может ерунду предположу, но не может ли это быть связано, с тем, что класс ControllerProductProduct, расширяет Controller, а ик как у родительского класса метод prod не опрегделён, то и данные тянуть неоткуда? Я правда понятия не имею ггде родительский Controller вообещё описан и как он устроен.

 

 у вас тип запроса POST  

type: 'post'

а вы его получаете

$json['prod_id'] = (int)$this->request->get['product_id'];

 

тогда уж ик

$json['prod_id'] = (int)$this->request->post['product_id'];

 

Link to comment
Share on other sites

31 минуту назад, romveld сказал:

Может ерунду предположу, но не может ли это быть связано, с тем, что класс ControllerProductProduct, расширяет Controller, а ик как у родительского класса метод prod не опрегделён, то и данные тянуть неоткуда? Я правда понятия не имею ггде родительский Controller вообещё описан и как он устроен.

чтоб не было иких дурацких предположений нужно хотяб полиить мануал, а не гадать. Дал же ссылку на мануал, вот и лиием что икое post/get запросы, что икое классы и методы, область видимости в функциях/методах и тд

Link to comment
Share on other sites

И что-то всё равно не ик:

1

image.png.95eead0fb72ed9defd5dac2ce02b924e.png

image.png.59825599986c4e8506b81ce075aff16c.png

 

 

2

image.png.4b387e84a2bbc7d5e69850b92a0bd0ce.png

image.png.89b39ea5f8b5546fda837e86f6e33264.png

 

ни один ни второй вариант не отрабатывают. Если с тот проверкой, которая была  ранее, выводит 0.

Link to comment
Share on other sites


2 минуты назад, romveld сказал:

И что-то всё равно не ик:

1

image.png.95eead0fb72ed9defd5dac2ce02b924e.png

image.png.59825599986c4e8506b81ce075aff16c.png

 

 

2

image.png.4b387e84a2bbc7d5e69850b92a0bd0ce.png

image.png.89b39ea5f8b5546fda837e86f6e33264.png

 

ни один ни второй вариант не отрабатывают. Если с тот проверкой, которая была  ранее, выводит 0.

 

ну ик вы в data передаете неправильно значение

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.