Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Отправка Ajax запроса в модуль OpenCart


Aky

Recommended Posts

как выглядит ваш ajax запрос полностью?

Надіслати
Поділитися на інших сайтах

судя по всему в стандартном режиме ни как

Вам нужно создать свой метод, который принимает post и отдает в index()


 

Надіслати
Поділитися на інших сайтах

9 минут назад, OCdevWizard сказал:

как выглядит ваш ajax запрос полностью?

 

$(function() {    
    var width = $(window).width();

    $.ajax({ 
        url: 'index.php?route=extension/module/latest/test', 
        type: 'POST', 
        data: 'width = '+ width,

        success: function(data) {
            console.log(data); 
        }
    });
    
});


 

Змінено користувачем Aky
Надіслати
Поділитися на інших сайтах


3 минуты назад, chukcha сказал:

судя по всему в стандартном режиме ни как

Вам нужно создать свой метод, который принимает post и отдает в index()


 

 

Как это реализовать программно? 

Надіслати
Поділитися на інших сайтах


Если делать

url: /index.php?route=extension/module/latest/index

выдает ошибку 404.

 

Если сделать

 /index.php?route=extension/module/latest/test 

то все нормально, но не работает вот это:

return $this->load->view('extension/module/latest', $data);

 

Змінено користувачем Aky
Надіслати
Поділитися на інших сайтах


public function test() {

$this->index($this->request->post);

}

а что там у вас работает или не работает не важно..

Я так понимаю вы хотите сделать кнопку - показать еще.

 

Надіслати
Поділитися на інших сайтах

9 минут назад, chukcha сказал:

public function test() {

$this->index($this->request->post);

}

а что там у вас работает или не работает не важно..

Я так понимаю вы хотите сделать кнопку - показать еще.

 

 

Как  работает этот код? 

 

Мне нужно просто с Ajax взять параметр width и передать его в PHP и соответственно в .tpl

Змінено користувачем Aky
Надіслати
Поділитися на інших сайтах


11 минут назад, Aky сказал:

Как  работает этот код? 

в методе test вызывается метод  index,  в который передается массив post

Надіслати
Поділитися на інших сайтах

1 минуту назад, fanatic сказал:

в методе test вызывается метод  index,  в который передается массив post

Какой вопрос - такой ответ :)

Надіслати
Поділитися на інших сайтах

49 минут назад, chukcha сказал:

public function test() {

$this->index($this->request->post);

}

а что там у вас работает или не работает не важно..

Я так понимаю вы хотите сделать кнопку - показать еще.

 

 

Что мне с этим делать? 

Надіслати
Поділитися на інших сайтах


42 минуты назад, freelancer сказал:

а как же HTTP_X_REQUESTED_WITH ? (( 

Это уже второстепенный вопрос

Там и в моем коде есть ошЫПка

Но тот кто делает, а не копипастит ее быстро отловит

 

Надіслати
Поділитися на інших сайтах

2 часа назад, Aky сказал:

success: function(data) {

перд этим поставьте dataType: 'html',

а после

2 часа назад, Aky сказал:

success: function(data) {

$('тут пишите id блока назначения').html($(data).find('тут тот же id блока назначения > *'));

так при ответе сервера будет обновлятся часть вашего контента.

 

по сути вам даже не нужно использовать другой метод, юзайте index() {...}

только сделайте проверку, если сюда приходит ваш пост запрос

if (isset($this->request->post['weight']) && $this->request->post['weight']) {

     $this->response->setOutput($this->load->view('extension/module/latest', $data));

} else {

return $this->load->view('extension/module/latest', $data);

}

Надіслати
Поділитися на інших сайтах

17 часов назад, chukcha сказал:

Это уже второстепенный вопрос

Там и в моем коде есть ошЫПка

Но тот кто делает, а не копипастит ее быстро отловит

 

 

Эх жаль что я только копипастю :)

Надіслати
Поділитися на інших сайтах


17 часов назад, OCdevWizard сказал:

перд этим поставьте dataType: 'html',

а после

$('тут пишите id блока назначения').html($(data).find('тут тот же id блока назначения > *'));

так при ответе сервера будет обновлятся часть вашего контента.

 

по сути вам даже не нужно использовать другой метод, юзайте index() {...}

только сделайте проверку, если сюда приходит ваш пост запрос

if (isset($this->request->post['weight']) && $this->request->post['weight']) {

     $this->response->setOutput($this->load->view('extension/module/latest', $data));

} else {

return $this->load->view('extension/module/latest', $data);

}

 

С выводом разберусь, это ерунда.

 

А вот параметр передать не получается.

 

Если в функции public test(){}  сделать echo $this->request->post['width']  то в браузере Console все отображается и передается нормально, 

как теперь передать этот параметр в public index() {} в переменную $data['width'] 

Змінено користувачем Aky
Надіслати
Поділитися на інших сайтах


1 минуту назад, freelancer сказал:

в index никак, вам же писали выше...

 

Кто как пишет) 

 

Хорошо не в index, как это передать вот сюда

 

return $this->load->view('extension/module/latest', $data);

 

Змінено користувачем Aky
Надіслати
Поділитися на інших сайтах


25 минут назад, freelancer сказал:

по аналогии с любым другим ajax

 

 

Мне нужно:

 Узнать ширину браузера -> передать её в controller -> с controller передать в .tpl в переменую $width;

 

Подскажите как это сделать !?

Надіслати
Поділитися на інших сайтах


Всем спасибо за помощь.  Все оказалось довольно просто. 

 

Функция test:

public function test() {   
    if (isset($this->request->post['width']) && $this->request->post['width']) {
        $this->session->data['width_browser'] = $this->request->post['width'];  
    }else{
        $this->session->data['width_browser'] = "0";  
    }
}

Функция index:

$data['width'] = $this->session->data['width_browser'];


 

 

 

Надіслати
Поділитися на інших сайтах


1 час назад, Aky сказал:

$this->session->data['width_browser'] = "0";  

так рождаются костыли.

Надіслати
Поділитися на інших сайтах

1 час назад, Aky сказал:

Узнать ширину браузера -> передать её в controller -> с controller передать в .tpl в переменую $width;

так а счего трогать контроллер если можно и на js узнать ширину окна и потом делать с этим значением подальшую обработку.

Надіслати
Поділитися на інших сайтах

1 час назад, Aky сказал:

$data['width'] = $this->session->data['width_browser'];

+костыль, если не проверить существует ли такая переменная в сессии то получите ошибку. Странный подход конечно...

 

 

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.