Magento 2: Como enviar dados usando o formulário Ajax em formulário personalizado?
11
Alguém pode me explicar como posso criar um formulário simples na página Magento-2 para enviar dados usando o Ajax? Eu já tenho uma forma e uma ação de controlador, que enviam dados sem usar o ajax.
olhe para a minha resposta, poderia ajudar mais do que o aceito
LucScu
Mostrando erro na resposta> Propriedade indefinida:> namespace \ nome do módulo \ Controller \ Index \ Index \ Interceptor :: $ _ jsonHelper Por favor, compartilhe para melhorar a resposta
Rohit Chauhan
Respostas:
15
Você pode simplesmente definir o código abaixo no seu arquivo phtml para usar o ajax. Você precisa alterar seu código personalizado no código abaixo,
você pode obter dados no controlador usando $ this-> getRequest () -> getParam ('customdata1');
Rakesh Jesadiya
11
resposta está recebendo resposta de script.
Rakesh Jesadiya
2
complete: function (response) aqui você tem resposta.
Rakesh Jesadiya
11
você deve definir a resposta acima do código $ this -> _ jsonHelper-> jsonEncode (['default_country' => $ country, 'state' => $ state,]) no controlador
Rakesh Jesadiya
11
no caso acima, default_country e state são retornados por resposta
Rakesh Jesadiya
12
A resposta aceita é boa, mas acho que pode ser útil tirar proveito da validação js que o magento core oferece. Portanto, tente usar o script js abaixo:
<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>
Não esqueça que o controlador deve retornar a resposta JSON como:
Respostas:
Você pode simplesmente definir o código abaixo no seu arquivo phtml para usar o ajax. Você precisa alterar seu código personalizado no código abaixo,
dentro do método execute () do arquivo do controlador ,
fonte
A resposta aceita é boa, mas acho que pode ser útil tirar proveito da validação js que o magento core oferece. Portanto, tente usar o script js abaixo:
Não esqueça que o controlador deve retornar a resposta JSON como:
fonte