如何将ajax post请求发送到前端控制器(AdressController.php)

问题描述 投票:0回答:1

我有一个选择下拉列表,当我从该下拉列表中选择一个值时,我试图从address.tpl发送一个ajax post请求到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,     
            )));

        }

    }
ajax prestashop-1.6
1个回答
0
投票

只有在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);
    }
});
© www.soinside.com 2019 - 2024. All rights reserved.