Перейти к публикации
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

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


Aky
 Погделиться

Рекомендованные сообещёния

как выглядит ваш 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'];

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

 

 

Ссылка на комменирий
Погделиться на других сайих

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы осивить комменирий

Создать аккаунт

Зарегистрируйтесь для получения аккауни. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите згдесь.

Войти сейчас
 Погделиться

×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обрилитка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфигденциальности.