【问题标题】:To show Ajax call value on same controller while using front controller使用前端控制器时在同一控制器上显示 Ajax 调用值
【发布时间】:2019-10-12 01:57:08
【问题描述】:

我想将 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:");
            }
        });

    }

前端控制器文件-文件名是-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 url 执行成功,但我无法打印在 displayAjaxFetchTPL 操作中写入的任何内容。

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

感谢和问候, Ridhi Bhutani

【问题讨论】:

    标签: php ajax prestashop prestashop-1.6


    【解决方案1】:

    php:

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

    jquery:

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

    【讨论】:

    • 虽然此代码可能会解决问题,including an explanation 关于如何以及为什么解决问题将真正有助于提高您的帖子质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的回答添加解释并说明适用的限制和假设。
    【解决方案2】:

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

    你的 HTML 应该是这样的:

    &lt;input type="button" class="btn btn-primary" id="test" value="test" /&gt;

    你的 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:");
            }
        });
    });
    

    【讨论】:

    • 嗨,通过使用 jquery 事件侦听器,我也无法回显在我的 filter.php 控制器中编写的“hello”。请帮我解决一下这个。谢谢
    • 你有没有 console.log(html);在成功函数中?
    • @Sachin,是的,这没有返回任何内容。在控制台中没有显示任何内容。但它显示成功警报。
    • 您介意直接打开您的模块网址吗?我的意思是检查这个值并直接在浏览器中打开。 url = '{$link->getModuleLink("hotelapi", "filter")|escape:"html"}';
    • @Sachin,是的,我也直接在浏览器中执行了这个 url,方法是从 INSPECT--->NETWORK 复制链接,然后执行链接。但它什么也没显示。我只能看到白屏。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-04
    相关资源
    最近更新 更多