He agregado un botón simple en uno de mis archivos phtml.
<input type='button' name='emq_zip_btn' class='emq_zip_btn' value='Go'>
He agregado un archivo js personalizado ("emq.js") desde un módulo personalizado (Ved_Mymodule):
require([
"jquery",
"jquery/ui"
], function($v){
//<![CDATA[
$v = jQuery.noConflict();
$v(document).ready(function()
{
console.log('jquery loaded from emq.js');
$v(".emq_zip_btn").on('click',function(e)
{
console.log('clicked');
});
});
//]]>
});
Cuando hago clic en el botón anterior, se imprime "clic" en la consola, es decir, jQuery funciona correctamente.
Aquí hay un archivo de controlador de un módulo personalizado Ved_Mymodule:
Ved \ Mymodule \ Controller \ Index \ Index.php:
<?php
namespace Ved\Mymodule\Controller\Index;
use Ved\Mymodule\Model\NewsFactory;
use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;
class Index extends Action
{
/**
* @var \Tutorial\SimpleNews\Model\NewsFactory
*/
protected $_modelNewsFactory;
/**
* @param Context $context
* @param NewsFactory $modelNewsFactory
*/
public function __construct(
Context $context,
NewsFactory $modelNewsFactory
) {
parent::__construct($context);
$this->_modelNewsFactory = $modelNewsFactory;
}
public function execute()
{
}
}
Ved / Mymodule / etc / frontend / routes.xml:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/
App/etc/routes.xsd">
<router id="standard">
<route id="news" frontName="news">
<module name="Ved_Mymodule" />
</route>
</router>
Mi pregunta es cómo devolver datos de este método de controlador y luego acceder a ellos a través de jQuery, es decir, cómo hacer una simple llamada ajax después de hacer clic en ese botón.
Respuestas:
A continuación se muestra el ejemplo de cómo hacerlo. Modifíquelo según sus necesidades.
Usé la plantilla js para esto.
El siguiente ejemplo creará un menú desplegable en su archivo phtml usando la funcionalidad ajax.
En tu JS
En el controlador
EN tu archivo phtml
getAjaxUrl debería funcionar en su archivo de bloque, que le devuelve la url
Espero que ayude.
fuente