Я добавил простую кнопку в один из моих файлов phtml.
<input type='button' name='emq_zip_btn' class='emq_zip_btn' value='Go'>
Я добавил один пользовательский файл js ("emq.js") из пользовательского модуля (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');
});
});
//]]>
});
Когда я нажимаю на вышеупомянутую кнопку, в консоли выводится «clicked», т.е. jQuery работает правильно.
Вот файл контроллера из пользовательского модуля Ved_Mymodule:
Вед \ MyModule \ Controller \ Индекс \ 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 / и т.д. / интерфейс / 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>
Мой вопрос заключается в том, как вернуть данные из этого метода контроллера, а затем получить к ним доступ через jQuery, т. Е. Как сделать простой вызов ajax после нажатия этой кнопки.
controllers
ajax
magento2.1.0
въеду
источник
источник
Ответы:
Ниже приведен пример, как это сделать, пожалуйста, измените его в соответствии с вашими требованиями.
Я использовал шаблон JS для этого.
Следующий пример создаст выпадающий файл phtml с использованием функциональности ajax.
В вашем JS
В контроллере
В вашем файле phtml
getAjaxUrl должен быть функцией в вашем файле блока, который возвращает вам URL
Надеюсь, это поможет.
источник