Как отправить запрос на публикацию ajax на фронт-контроллер (AdressController.php) - PullRequest
0 голосов
/ 16 апреля 2019

У меня есть выпадающий список, и когда я выбираю значение из этого выпадающего списка, я пытаюсь отправить из address.tpl ajax-запрос на адрес AddressController.php.

Не могу найти, какотправьте форму на правильный URL-адрес (URL-адрес контроллера, его путь: /public_html/override/controllers/front/AddressController.php)

Мой запрос ajax, который находится в address.tpl

<script>
    {literal}

        var uriAddress = 'index.php?controller=AddressController&action=example&token=922fb5c427f8abfa1eaf7aa175c9529b';



        $('#id_state').change( function() {
           $(this).find(":selected").each(function () {                              
                city = $(this).text();                   
            });

            $.ajax({
                url : uriAddress,
                type : 'POST',
                async: true,
                cache: false,
                dataType : "json",
                data: {
                    city: city
                },
                success : function (result) {
                    console.log(result);
                }
            });
        });

    {/literal}
</script>

А это мой AddressController.php

    public function displayAjax()
    {
        if (count($this->errors))
        {
            $return = array(
                'hasError' => !empty($this->errors),
                'errors' => $this->errors
            );
            die(Tools::jsonEncode($return));
        }

        if(Tools::getValue('MyControllerAction')=='myMyControllerAction')
        {
            $cities = array();
            $sql = 'SELECT judet, localitate FROM sdn_fancourier_cities WHERE judet = "alba"';
            if ($results = Db::getInstance()->ExecuteS($sql))
            foreach ($results as $resultCity) {
                array_push($cities, $resultCity);
            }

            $this->context->smarty->assign(array(
                'city_list' => $cities,     
            ));

           return json_encode($this->context->smarty->assign(array(
                'city_list' => $cities,     
            )));

        }

    }

1 Ответ

0 голосов
/ 18 апреля 2019

Функция displayAjax() вызывается только в случае отправки параметра ajax при вызове $.ajax.

Кроме того, когда вы отправляете параметр action (в вашем случае это «пример»), вызываемая функция будет displayAjaxExample().

Ваш AddressController.php должен выглядеть примерно так:

class AddressController extends AddressControllerCore
{
    public function displayAjaxExample()
    {
        [YOUR CODE HERE]
    }
}

и ваш вызов ajax должен быть:

$.ajax({
    url : uriAddress,
    type : 'POST',
    async: true,
    cache: false,
    dataType : "json",
    data: {
        city: city,
        ajax: 1
    },
    success : function (result) {
        console.log(result);
    }
});
...