Magento 2: Как отправить данные с помощью формы Ajax в пользовательской форме?
11
Может кто-нибудь объяснить мне, как я могу создать простую форму на странице Magento-2 для отправки данных с помощью Ajax? У меня уже есть форма и действие контроллера, которые отправляют данные без использования ajax.
посмотрите на мой ответ, он может помочь больше, чем принятый
LucScu
Отображение ошибки в ответе> Неопределенное свойство:> namespace \ modulename \ Controller \ Index \ Index \ Interceptor :: $ _ jsonHelper Пожалуйста, поделитесь, чтобы улучшить ответ
Рохит Чаухан
Ответы:
15
Вы можете просто установить приведенный ниже код в своем phtml-файле, чтобы использовать ajax. Вы должны изменить свой customurl в приведенном ниже коде,
вы можете получить данные в контроллере, используя $ this-> getRequest () -> getParam ('customdata1');
Ракеш Джесадия,
1
ответ получен в ответе сценария.
Ракеш Джесадия
2
complete: function (response) здесь вы получили ответ.
Ракеш Джесадия
1
Вы должны установить ответ выше $ this -> _ jsonHelper-> jsonEncode (['default_country' => $ country, 'state' => $ state,]) в контроллере
Ракеш Джесадия
1
в указанном выше случае default_country и state возвращаются из ответа
Ракеш Джесадия,
13
Принятый ответ - это хорошо, но я думаю, что было бы полезно воспользоваться проверкой js, которую предлагает ядро magento. Итак, попробуйте использовать ниже JS скрипт:
<scripttype="text/javascript">
require(["jquery","mage/mage"],function($){
$(document).ready(function(){
$('#form_id').mage('validation',{
submitHandler:function(form){
$.ajax({
url:"url to module/controller/action",
data: $('#form_id').serialize(),
type:'POST',
dataType:'json',
beforeSend:function(){// show some loading icon},
success:function(data, status, xhr){// data contains your controller response},
error:function(xhr, status, errorThrown){
console.log('Error happens. Try again.');
console.log(errorThrown);}});}});});});</script>
Не забывайте, что контроллер должен возвращать ответ JSON, например:
Ответы:
Вы можете просто установить приведенный ниже код в своем phtml-файле, чтобы использовать ajax. Вы должны изменить свой customurl в приведенном ниже коде,
внутри вашего файла метода execute () контроллера ,
источник
Принятый ответ - это хорошо, но я думаю, что было бы полезно воспользоваться проверкой js, которую предлагает ядро magento. Итак, попробуйте использовать ниже JS скрипт:
Не забывайте, что контроллер должен возвращать ответ JSON, например:
источник