Показывать значение вызова Ajax на том же контроллере при использовании фронтального контроллера - PullRequest
0 голосов
/ 27 сентября 2019

Я хотел отправить данные ajax на страницу контроллера и отобразить данные ajax в файле шаблона в prestashop 1.6.

Я использую этот метод, но не могу получить никаких результатов -

файл 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'));*/

    }

}

Мой URL ajax выполняетсяуспешно, но я не могу напечатать что-либо написанное внутри действия displayAjaxFetchTPL.

Пожалуйста, помогите мне с этой проблемой.

Спасибо и всего наилучшего, Ридхи Бутани

Ответы [ 2 ]

0 голосов
/ 28 сентября 2019

php:

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

jquery:

success: function (html) {
        alert(html.mYtxt);
    },
0 голосов
/ 27 сентября 2019

Вместо использования события "onclick" на вашей кнопке, почему бы не использовать событие lQitery JQuery?

Ваш 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:");
        },
        error: function () {
            alert("ERROR:");
        }
    });
});
...