【问题标题】:Ajax Request (Prestashop 1.7)Ajax 请求 (Prestashop 1.7)
【发布时间】:2021-06-18 14:52:36
【问题描述】:

我想设法从模块中恢复当前页面的产品,以便我可以提出我的请求 Ajax。 有什么遗漏还是我做错了什么?我在请求中看到,当我们将产品添加到购物车时,URL 中有产品 id,我们必须做些什么来检索 id? module ajax javascript

模块方面:

public function getProduct() {
    $id = $this->hookDisplayProductActions();
    $product = new Product($id);
    return $product;
}

public function hookDisplayProductActions() {
    return Tools::getValue('id_product');
}

ajax 方面:

class MultiTransporteursAjaxModuleFrontController extends 
ModuleFrontController
{
public function __construct()
{
    parent::__construct();
}

public function init()
{
    parent::init();
}

public function initContent(){
    parent::initContent();
}

}

javascript 方面:

var mt_ajax = prestashop.urls.base_url + 
'modules/multitransporteurs/controllers/front/ajax';
$(document).ready(function() {
  $('#carriers').click(function () {
    $.ajax({
        url:mt_ajax,
        data: {id_product:$(this).val()},
        method:'GET',
        success:function(data) {
            $('.ajax_carriers').html(data);
        },
    });
  });
})

【问题讨论】:

标签: javascript ajax module prestashop product


【解决方案1】:

你不应该调用 hookdisplayProductActions 方法

public function getProduct() {
    $id = Tools::getValue('id_product');
    $product = new Product($id);
    return $product;
 }

您应该在控制器端分配 id_product 并将其放入隐藏在表单中的输入类型 对于 ajax 控制器端,您可以尝试此解决方案 https://stackoverflow.com/a/43697852/16244750 不要忘记将 die($res) 用于 json 结果 不要忘记在 ajax 请求中发送 'action' 参数

【讨论】:

    【解决方案2】:

    这并不难,你必须使用 Prestashop 的 action 属性。

    在 java-script 中,您可以像这样发送数据:

       $.ajax({
            cache: false,
            dataType : 'JSON',
            url: mt_ajax
            data: { action: 'myScript', myvariable:150},
            success: function(data) {
            },
            error: function(jqXHR, textStatus, errorThrown) {
                console.log('Error: ' + textStatus + ' ' + errorThrown);
            }
        });
    

    在 PHP 中,您可以像这样获取结果:

       public function ajaxProcessMyScript()
       {
            $myvar = (int)Tools::getValue('myvariable');
            if ($myvar) {
                echo Tools::jsonEncode('Message received!');
            } else {
                echo Tools::jsonEncode('Oops, something went wrong!');
            }
       }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-03
      • 2017-09-27
      • 2017-11-10
      • 2021-06-14
      • 1970-01-01
      • 2018-06-01
      • 2018-05-15
      • 1970-01-01
      相关资源
      最近更新 更多