Jump to content

Recommended Posts

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

Share this post


Link to post
Share on other sites

Ну, для примера, делаем контроллер: создаём папку 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>

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

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

Share this post


Link to post
Share on other sites

Ну, для примера, делаем контроллер: создаём папку 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 не писал, так что должно работать.

Edited by PomidorkaSu

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

погуглите 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 искать этот класс вообще не понятно. Может быть я что-то делаю не так?

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

Share this post


Link to post
Share on other sites

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

<?php

class ControllerHelloWorldHelloWorld extends Controller
{

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

Share this post


Link to post
Share on other sites

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

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

Понял)

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

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites

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

 

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

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

Share this post


Link to post
Share on other sites

 

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

какой контроллер вызывать указано в 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

Share this post


Link to post
Share on other sites

..system\engine\front.php

 

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

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

Share this post


Link to post
Share on other sites

..system\engine\front.php

 

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.