Перейти к содержанию

Рекомендуемые сообщения

Как передать с сервака что-нибудь (хоть hello world) в формате json при нажатии на кнопку (ajax-ом)?
Вообще не могу понять пути и т.д. в opencart-e. Подскажите пожалуйста.

Поделиться сообщением


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

Ну, для примера, делаем контроллер: создаём папку catalog/controller/hello_world, в папке создаём файл hello_world.php, в файл пишем следующее:

<?php

class ControllerHelloWorldHelloWorld extends Controller
{
    public function index()
    {
        $this->response->addHeader('Content-Type: application/json; charset=UTF-8');
        $this->response->setOutput(json_encode(array(
            'response' => 'Hello, World!'
        )));
    }
}

потом в шаблоне делаем кнопку и пишем скрипт для обработки нажатий на эту кнопку:

<script>

    function doSomething()
    {
        jQuery.get('/index.php?route=hello_world/hello_world', function(data){
            console.log(data);
        }, 'json');
    }

</script>
<button type="button" onclick="doSomething();">Нажми меня</button>

Открываем консоль браузера, нажимаем на кнопку и видим ответ.

Вот, как-то так.

Поделиться сообщением


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

Ну, для примера, делаем контроллер: создаём папку catalog/controller/hello_world, в папке создаём файл hello_world.php, в файл пишем следующее:

<?php

class ControllerHelloWorldHelloWorld extends Controller
{
    public function index()
    {
        $this->response->addHeader('Content-Type: application/json; charset=UTF-8');
        $this->response->setOutput(json_encode(array(
            'response' => 'Hello, World!'
        )));
    }
}

потом в шаблоне делаем кнопку и пишем скрипт для обработки нажатий на эту кнопку:

<script>

    function doSomething()
    {
        jQuery.get('/index.php?route=hello_world/hello_world', function(data){
            console.log(data);
        }, 'json');
    }

</script>
<button type="button" onclick="doSomething();">Нажми меня</button>

Открываем консоль браузера, нажимаем на кнопку и видим ответ.

Вот, как-то так.

Хмм, значит проблема где-то ещё...

Сделал так, как вы написали - выдало

 

Запрос из постороннего источника заблокирован: Политика одного источника запрещает чтение удаленного ресурса на http://блабла/index.php?route=hello_world/hello_world. (Причина: отсутствует заголовок CORS 'Access-Control-Allow-Origin').


З.ы. А если www убрать, что я думаю он воспринимает как кросс домен, то ничего. Ни ошибки ни привета. Просто по нажатию на кнопку ругается на то, что метод getPreventDefault() является устаревшим, но вроде как use strict не писал, так что должно работать.

Изменено пользователем PomidorkaSu

Поделиться сообщением


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

погуглите Access-Control-Allow-Origin

или же просто убедитесь, что домены отправителя и получателя ajax запросов совпадают

Поделиться сообщением


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

погуглите Access-Control-Allow-Origin

или же просто убедитесь, что домены отправителя и получателя ajax запросов совпадают

Почитал, но на самом деле это понятно. Проблема с этим решается простой подстановкой пути или переменной с доменом.

Однако ничего не отображается. Вернее не отображалось в консоли. Я убрал ожидание json формата и увидил такой сюрприз.

 

<b>Fatal error</b>:  Class 'Controllerhelloworldhello' not found in <b>D:\inetpub\vhosts\DOMEN.NET\httpdocs\system\engine\front.php</b> on line <b>39</b><br />

С какого перепуга оно лезет в систему opencarta искать этот класс вообще не понятно. Может быть я что-то делаю не так?

Но я просто нигде не указывал вообще классов никаких.

Поделиться сообщением


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

Ну, для примера, делаем контроллер: создаём папку catalog/controller/hello_world, в папке создаём файл hello_world.php, в файл пишем следующее:

<?php

class ControllerHelloWorldHelloWorld extends Controller
{

а это что по вашему?

Поделиться сообщением


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

а это что по вашему?

Фуф, спасибо огромное)

Понял)

Оно ещё и по всему дереву ищет контролер. Разобрался теперь

Поделиться сообщением


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

никто ничего не ищет

какой контроллер вызывать указано в js

        jQuery.get('/index.php?route=hello_world/hello_world', function(data){

Поделиться сообщением


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

про политику одного источника - это у вас сайт доступен с www и без www, сделайте редирект на что-то одно

 

отличный живой пример по ajax - посмотреть исходный код

например как реализована генерация номера счета (инвойс) при просмотре заказа в admin/view/template/sale/order_info.tpl

Поделиться сообщением


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

 

никто ничего не ищет

какой контроллер вызывать указано в js

 

Так а если он не ищет, то с какого перепуга он в папку системс позел, а когда я правильный путь папки сделал, то полез в которую нужно.

 Class 'Controllerhelloworldhello' not found in <b>D:\inetpub\vhosts\DOMEN.NET\httpdocs\system\engine\front.php</b>

По моему конкретно отображается наследование классов контроллеров.

з.ы. если бы не искал - было бы "D:\inetpub\vhosts\DOMEN.NET\httpdocs\controler\helo_world\helo.php

Поделиться сообщением


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

..system\engine\front.php

 

здесь магическим образом происходит обработка ;) 

сослался именно на файл движка, который и не нашел указанного контроллера

Поделиться сообщением


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

..system\engine\front.php

 

здесь магическим образом происходит обработка ;)

сослался именно на файл движка, который и не нашел указанного контроллера

)) этот код компилировал дэвид блейн...

Поделиться сообщением


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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