$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$configLoader = $objectManager->get('\Magento\Backend\Model\UrlInterface');
$url = $configLoader->getUrl('testing/queue/purchase');
<script>
require([
'jquery',
'mage/mage',
'mage/calendar'
], function($){
$('#customer_company').on('change',function(event){
$.ajax({
url: '<?php echo $url ?>',
type:'POST',
showLoader: true,
dataType:'json',
complete: function(response) {
console.log(response);
},
error: function (xhr, status, errorThrown) {
console.log('Error happens. Try again.');
}
});
});
});
i write this code in magento admin on change the ajax request call and its hit my controller but in console the response is Invalid Form Key. Please refresh the page
-
Use this:- "<?php echo $this->getUrl('testing/queue/purchase'); ?>"temper– temper2019年10月01日 12:07:14 +00:00Commented Oct 1, 2019 at 12:07
3 Answers 3
/etc/adminhtml/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 frontName="testing_queue" id="testing_queue">
<module before="Magento_Backend" name="Vendor_Module"/>
</route>
</router>
</config>
in Phtml File
function ajax(){
var name = document.getElementsByName("product[name]")[0].value;
var type = document.getElementsByName("product[product_category_type]")[0].value;
$.ajax({
url: 'admin/testing_queue/customajax',
showLoader: true,
data: {
id:<?php echo $id ?>,p:pincode
},
type: "POST",
success: function(result){
console.log(result);
}
});
}
instead of using object manager and URL interface just use $this->getUrl()
jQuery.ajax({
url: "<?php echo $this->getUrl('testing/queue/purchase') ?>",
type: "POST",
success: function (res) {
console.log(res);
}
});
If above code still showing error of form key, then try GET instead of POST
All possible solutions are:-
The right way is, inject the UrlInterface in you model block or whatever class constructor
Then call the getUrl() function
class SomeClass extends \Some\Other\Class
{
protected $_backendUrl;
public function __construct(
...........
...........
\Magento\Backend\Model\UrlInterface $backendUrl,
...........
) {
$this->_backendUrl = $backendUrl;
}
public function someFunction()
{
$params = array('some'=>'url_parameters');
$url = $this->_backendUrl->getUrl("testing/queue/purchase", $params);
}
}
or
You can easily get Admin url By calling
$this->getUrl('testing/queue/purchase');
Please note that "Context" type of object is loaded in the $this object