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

[Решено] AJAX пример


Recommended Posts

Как передать с сервака что-нибудь (хоть 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 запросов совпадают

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

Однако ничего не отображается. Вернее не отображалось в консоли. Я убрал ожидание 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
{

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

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

про политику одного источника - это у вас сайт доступен с 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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

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