在使用前端控制器时在同一控制器上显示Ajax调用值

时间:2019-09-27 09:31:43

标签: php ajax prestashop prestashop-1.6

我想将ajax数据发送到控制器页面,并在prestashop 1.6中的模板文件上显示ajax数据。

我正在使用此方法,但无法获得任何结果-

tpl文件:

<input type="button" class="btn btn-primary" id="test" onclick = "testing()" value="test" />

function testing() {
        url = '{$link->getModuleLink("hotelapi", "filter")|escape:"html"}';
        $.ajax({
            url: url,
            type : 'GET',
            cache : false,
            data : {
                ajax: 1,
                action: 'fetchTPL',
            },
            success: function(html){
                alert("SUCCESS:");
            },
            error: function() {
                alert("ERROR:");
            }
        });

    }

Front Controller文件-文件名为-filter.php

<?php 
/*require (dirname(__FILE__) . '/../../../../config/config.inc.php');
require (dirname(__FILE__) . '/../../../../init.php');*/

class hotelapiFilterModuleFrontController extends ModuleFrontController
{
    public function displayAjaxFetchTPL()
    {
        echo 'hello'; 
        //after processing all data just assign it to smarty of content
        /*$this->context->smarty->assign(array(
            'youContentData' => $_POST['room'])
        );

        // to fetch a tpl file use fetch method and use die function to return the response to ajax
        die($this->context->smarty->fetch('a1.tpl'));*/

    }

}

我的ajax网址执行成功,但是我无法打印在displayAjaxFetchTPL操作中编写的任何内容。

请任何人帮助我解决这个问题。

感谢和问候, 里迪布塔尼(Ridhi Bhutani)

2 个答案:

答案 0 :(得分:0)

为什么不使用按钮上的“ onclick”事件,为什么不使用JQuery事件lsitener?

您的HTML应该是这样的:

<input type="button" class="btn btn-primary" id="test" value="test" />

您的JS是这样的:

$("#test").on("click", function () {
    url = '{$link->getModuleLink("hotelapi", "filter")|escape:"html"}';
    $.ajax({
        url: url,
        type: 'GET',
        cache: false,
        data: {
            ajax: 1,
            action: 'fetchTPL',
        },
        success: function (html) {
            alert("SUCCESS:"+html);
        },
        error: function () {
            alert("ERROR:");
        }
    });
});

答案 1 :(得分:0)

php:

public function displayAjaxFetchTPL()
{
    $data = ['mYtxt' => 'hello'];
    die(Tools::jsonEncode($data)); 
}

jquery:

success: function (html) {
        alert(html.mYtxt);
    },