Magento模块Ajax请求返回404错误



我正面临我的Magento模块的问题。它在本地主机上运行良好,但是当上传到服务器时,任何Ajax请求都会返回404错误。我在命名空间Emps_MAMIntegration中创建了一个Magento 2模块。我还在etc/frontend/routes.xml中创建了一个routes.xml文件,内容如下:

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

在我的模板文件,我做一个ajax请求文件Controller/Index/Number.php如下:

$.ajax({
url: '<?= $block->getUrl('mamform/index/number') ?>',
type: 'POST',
data: {
type: 'model',
make: make
},
success: function(data) {
// handle success
},
error: function(error) {
// error handling
}
});

然后在我的Number.php文件:

<?php
namespace EmpsMAMIntegrationControllerIndex;
use MagentoFrameworkControllerResultJsonFactory;
use EMPSMAMIntegrationHelperMamService;

class Number extends MagentoFrameworkAppActionAction
{
private $mamService;
private $resultJsonFactory;
public function __construct(
MagentoFrameworkAppActionContext $context,
MamService $_mamService,
JsonFactory $resultJsonFactory
) {
$this->mamService = $_mamService;
parent::__construct($context);
$this->resultJsonFactory = $resultJsonFactory;
}
public function execute()
{

$post = $this->getRequest()->getPostValue();
// var_dump($post);
if (!$post) {
$this->_redirect($this->getRequest()->getServer('HTTP_REFERER'));
return;
}
$resultJson = $this->resultJsonFactory->create();
$type = $post['type'];
/// omitted for brevity
return $resultJson->setData(['models' => $data]);
}
}

在本地主机上,所有ajax请求都按预期工作,并返回所有数据。然而,当我将模块上传到生产环境时,它们失败了,报错404。

Magento的路由可能区分大小写,这取决于服务器配置

您的模块名称是EMPS_MAMIntegration但是你的命名空间是EmpsMAMIntegration.我敢打赌,这是它在某些环境下工作而不是在其他环境下工作的原因。

尝试将模块重命名为Emps_MAMIntegration或者向我们展示您的register.php文件。还要确保模块在生产环境中是启用的。