Задать вопрос
@camradee

Как сделать ajax запрос в Magento 2.4?

Надо со страницы продукта выполнить ajax-запрос. В интернете полно примеров как это сделтаь для более старых версий Magentо, есть варианты со своей кастомной страницы, пробую по аналогии, не получается - если через адресную строку браузера - все работает, если из javascript - нет. У контроллера срабатывает конструктор, но метод execute() не вызывается, сам ajax возвращается со статусом 302, после чего заново вызывается страница продукта 5f997528b73bd385306102.png

$.ajax({
                        url: baseUrl + 'module/ajax/fooaction',
                        type: "POST",
                        data: {},
                        showLoader: true,
                        cache: false,
                        crossDomain:true,
                        dataType: 'json',
                        success: function(response){
                        }
                    });


Кода контроллера примерно такой
<?php
namespace Vendor\Module\Controller\Ajax;

use Magento\Framework\App\Action\Context;
use Magento\Framework\Controller\Result\JsonFactory;
use Magento\Framework\App\Action\HttpGetActionInterface;

class FooAction implements HttpGetActionInterface
{
    /**
     * @var \Magento\Framework\App\Action\Contex
     */
    private $context;
    /**
     * @var \Magento\Framework\Controller\Result\JsonFactory
     */
    protected $resultJsonFactory;

    /**
     * @param \Magento\Framework\App\Action\Context $context
     * @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
     */
    public function __construct(Context $context, JsonFactory $resultJsonFactory)
    {
        $this->context = $context;
        $this->resultJsonFactory = $resultJsonFactory;
    }

    /**
     * @return json
     */
    public function execute()
    {
        $params = $this->context->getRequest()->getParams();     
        $resultJson = $this->resultJsonFactory->create();
        $resultJson->setData(['message' => 'Hello world', 'success' => true]);
        return $resultJson;
    }
}


Почему примерно, потому что это уже его 10-20 итерация, пробовал разные варианты, прямо сейчас такой:
...............
use Magento\Framework\App\Action\HttpPostActionInterface;
use Magento\Framework\App\Action\HttpGetActionInterface;
use Magento\Framework\App\Action\Action;

class FooAction extends Action implements HttpGetActionInterface, HttpPostActionInterface
{
    /**
     * @var \Magento\Framework\App\Action\Contex
     */
    private $context;
    /**
     * @var \Magento\Framework\Controller\Result\JsonFactory
     */
    protected $resultJsonFactory;

    /**
     * @param \Magento\Framework\App\Action\Context $context
     * @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
     */
    public function __construct(Context $context, JsonFactory $resultJsonFactory)
    {
        $this->context = $context;
        $this->resultJsonFactory = $resultJsonFactory;
        parent::__construct($context);
    }
............................................................


routes.xml
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
    <router id="standard">
        <route id="module" frontName="module">
            <module name="Vendor_module" />
        </route>
    </router>
</config>

Что я делаю не так?
  • Вопрос задан
  • 310 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы