I've a form that performs an Ajax call to a controller, but the response always is You entered an invalid Secret Key. Please refresh the page.
PereiraTech/Faturamento/Controller/Adminhtml/Ac/Index.php
<?php
namespace PereiraTech\Faturamento\Controller\Adminhtml\Ac;
class Index extends \Magento\Backend\App\Action
{
/**
* @var \Magento\Framework\Controller\Result\JsonFactory
*/
protected $resultJsonFactory;
public function __construct(
\Magento\Backend\App\Action\Context $context,
\Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
)
{
parent::__construct($context);
$this->resultFactory = $resultJsonFactory;
}
public function execute()
{
return $this->resultJsonFactory->create()->setData(['a' => 'b']);
//return 'test string';
}
public function indexAction(){
//echo 'test string';
}
}
PereiraTech/Faturamento/view/adminhtml/web/js/form/element/options.js
define([
'jquery',
'uiRegistry',
'Magento_Ui/js/form/components/button',
'Magento_Ui/js/modal/modal'
], function ($,uiRegistry, select, modal) {
'use strict';
return select.extend({
action: function(){
var ajaxRequest;
var param = 'ajax=1';
ajaxRequest = jQuery.ajax({
url: "http://localhost/magento/admin_ptech/faturamento_fat/ac/index",
type: 'GET',
data: {param, form_key: window.FORM_KEY},
dataType: 'json'
});
//Show successfully for submit message
ajaxRequest.done(function (response, textStatus, jqXHR) {
console.log(textStatus);
console.log(response);
});
//On failure of request this function will be called
ajaxRequest.fail(function (xhr, status, error) {
console.log(status);
console.log(error);
console.log(xhr.responseText);
//show error
console.log('rou');
});
return this._super();
},
});
});
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="admin">
<route id="faturamento_fat" frontName="faturamento_fat">
<module name="PereiraTech_Faturamento"/>
</route>
</router>
</config>
If I call just /faturamento_fat/ac/index/
I receive the dashboard html, so I've put the full url to post method.
Edit: If I change from GET to POST, the returned value is a 500 Internal server error problem
/admin_ptech//faturamento_fat/ac/index
?