如何在prestashop前端自定义模块中调用ajax

时间:2016-06-12 10:06:39

标签: smarty prestashop prestashop-1.6 prestashop-1.5

我有一个模块,它创建一个显示特定抽奖获胜者的前端页面,我希望按年份(获胜年份)添加过滤器,当我更改年份必须通过ajax请求并更改我的div

在我的display.tpl中为前端添加了javascript

<script type="text/javascript">
{literal}
function QuickLook() {
    var year = $("#year").val();
    alert(year);
    $.ajax({
            url:  baseDir+'/modules/addwinners/controllers/front/displaybyajax.php',
            type: 'get',
            data: 'ajax=true&year='+year,
            success: function(response) {
                alert(response);
                console.log('success');
                // OTHER SUCCESS COMMAND - CHECK THE RETURN VALUE
                document.getElementById("winnersDiv").innerHTML=response;
            }
    });
    return false;
}

{/literal}

但它抱怨致命错误:Class&#39; ModuleFrontController&#39;找不到

1 个答案:

答案 0 :(得分:1)

您不能使用完整路径直接访问模块控制器:/modules/addwinners/controllers/front/displaybyajax.php通过这种方式访问​​控制器,不调用调度程序并且不加载Prestashop Core类。

您需要以Prestashop方式呼叫您的控制器:

<script type="text/javascript">
{literal}
    function QuickLook() {
        var year = $("#year").val();
        alert(year);
        $.ajax({
            url: baseDir + 'index.php?controller=displaybyajax&redirect=module&module=addwinners',
            type: 'get',
            data: 'ajax=true&year='+year,
            success: function(response) {
                alert(response);
                console.log('success');
                // OTHER SUCCESS COMMAND - CHECK THE RETURN VALUE
                document.getElementById("winnersDiv").innerHTML=response;
            }
        });
        return false;
    }
{/literal}
</script>