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

AJAX получение шаблона.


Recommended Posts

ocStore v2.3.0.2.4

Товарищи, приветствую! Пишу модуль в админке, имею контроллер, который загружает основной шаблон. Этот шаблон использую JQ и AJAX обращается к серверу, ожидая, что тот выполнит метод, описанный в контроллере. Этот метод, в свою очередь,  выполняет некоторые манипуляции с данными, потом передаёт их второму шаблону (tpl) и тот уже должен выводиться: 

public function method() {
    if ($this->request->server['REQUEST_METHOD'] == 'POST') {
        //code...
        $this->response->addHeader('Content-Type: html');
	$this->response->setOutput($this->load->view('controller/template', $data));
    }
}

AJAX запрос отправляется, и возвращается ответ с кодом 200, в вигде html "Страница не найгдена". В итоге AJAX стулится в .../admin/index.php?route=controller/file/method&token=... но когда я перехожу по этому адресу, ик же вижу сообещёние "Страница не найгдена". Запрос икой: 

    function getPerms(url) {
        $.ajax({
            url: url,
            method: 'POST',
            dataType: 'html',
            brforeSend: function(){
                $('.panel-title>i').replaceWith('<i class="fa fa-spinner fa-pulse fa-3x fa-fw"></i>');
            },
            complete: function(){
                $('.panel-title>i').replaceWith('<i class="fa fa-table" aria-hidden="true"></i>');
                console.log('complete');
                console.log(url);
            },
            success: function(data){
                $('#upp-table').html(data);
                console.log(data);
            },
            error: function(){
                console.log('error');
            }
        });
    }

Как правильно обратиться к методу, что бы полулить его ответ (готовый шаблон)?
 

Link to comment
Share on other sites


Посмотрите хотя бы базовые способы jquery ajax-запросов. Вы его отправляете пустот в никуда.

Link to comment
Share on other sites


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

Посмотрите хотя бы базовые способы jquery ajax-запросов. Вы его отправляете пустот в никуда.

Ну допустим я к запросу добавляю data: 'test', но от этого ничего не меняется. Что конкретно не ик с запросом? Как сгделать что бы он отправлялся "в куда"? :)

Link to comment
Share on other sites


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

Ну допустим я к запросу добавляю data: 'test', но от этого ничего не меняется. Что конкретно не ик с запросом? Как сгделать что бы он отправлялся "в куда"? :)

Неужели вас в гугле забанили? Ну есть же куча примеров ajax запросов, хоть один гляньте. Куда вы его отправляете? 

url: url,
Link to comment
Share on other sites


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

Неужели вас в гугле забанили?

Слава потому чтогу - нет :)
В приложенном когде видно, что запрос отправляет функция getPerms() которая принимает один единственный параметр - url адрес. Адрес по которому отправляется запрос я тоже описал: .../admin/index.php?route=controller/file/method&token=... 
Если у Вас есть ещё предположения, сильно прошу их высказать! 

  • +1 1
Link to comment
Share on other sites


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

Адрес по которому отправляется запрос я тоже описал: 

Адрес, по которому отправляет данные приведённый  вами код запроса -  'url'. 
Если ваш реальный код другой, копируйте его, а не загадывайте ребусы.

Link to comment
Share on other sites


Ну во первых, token в URL желательно подмешивать непосредственно уже в запросе 
 

url: url + '&token=<?php echo $token; ?>',

В самом контроллере все верно, но нужно еещё обьявить в контроллере который ренгдерит шаблон ггде Вы вызываете метод getPerms

$data['token'] = $this->session->data['token'];

При передаче аргумени url в js скорее всего знак & заменяется на &amp;
из-за этого и выдает ошибку

 

А еещё следует убрать строку 

$this->response->addHeader('Content-Type: html');

И если method это публичный метод и Вы не передаете в него никаких данных, то используйте метод GET вместо POST

  • +1 1
Link to comment
Share on other sites

48 минут назад, Panda58dev сказал:

/admin/index.php?route=controller/file/method

У вас файл точно лежит в директории /admin/controller/controller/   ?

Link to comment
Share on other sites


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

Если ваш реальный код другой, копируйте его, а не загадывайте ребусы.

Окей, с запросом разобрался, оказывается проблема и правда была в url: контроллер, метод index(), в нём подключаю js файл и передаю в шаблон url:

$this->document->addScript('view/javascript/users_perm_plus/users_perm_plus.js');
$data['getPerms'] = $this->url->link('user/user_permission/getPerms', 'token=' . $this->session->data['token'] . $url, true);

Тут-то и вся проблема - указал не тот контроллер )

Но теперьь другая проблема есть: кидает вот икую ошибку:

Link to comment
Share on other sites


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

У вас файл точно лежит в директории /admin/controller/controller/   

Точно, основной шаблон и метод index загружаются

Link to comment
Share on other sites


1 годину назад, Shureg сказав:

У вас файл точно лежит в директории /admin/controller/controller/   ?

ну назвал человек папку controller и положил он ее в controller что тут икого :grin:

Link to comment
Share on other sites

1 годину назад, Panda58dev сказав:

Окей, с запросом разобрался, оказывается проблема и правда была в url: контроллер, метод index(), в нём подключаю js файл и передаю в шаблон url:

$this->document->addScript('view/javascript/users_perm_plus/users_perm_plus.js');
$data['getPerms'] = $this->url->link('user/user_permission/getPerms', 'token=' . $this->session->data['token'] . $url, true);

Тут-то и вся проблема - указал не тот контроллер )

Но теперьь другая проблема есть: кидает вот икую ошибку:

не видит метода getPerms в users_perm_plus.php

Link to comment
Share on other sites

@ocdev_pro помог и всё разъяснил, с AJAX проблем не было, просто я обращался к методу могдели, которого не было. Всем спасипотому что! 

  • +1 1
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.