Magento 2: Comment envoyer des données en utilisant le formulaire Ajax sous forme personnalisée?
11
Quelqu'un peut-il m'expliquer comment créer un formulaire simple sur la page Magento-2 pour envoyer des données à l'aide d'Ajax? J'ai déjà une action de formulaire et de contrôleur, qui envoie des données sans utiliser ajax.
regardez ma réponse, cela pourrait aider plus que celui accepté
LucScu
Affichage de l'erreur de réponse> Propriété non définie:> namespace \ modulename \ Controller \ Index \ Index \ Interceptor :: $ _ jsonHelper Veuillez partager pour améliorer la réponse
Rohit Chauhan
Réponses:
15
Vous pouvez simplement définir le code ci-dessous dans votre fichier phtml pour utiliser ajax, vous devez changer votre customurl dans le code ci-dessous,
vous pouvez obtenir des données dans le contrôleur en utilisant $ this-> getRequest () -> getParam ('customdata1');
Rakesh Jesadiya
1
la réponse devient dans la réponse du script.
Rakesh Jesadiya
2
complete: fonction (réponse) ici vous avez une réponse.
Rakesh Jesadiya
1
vous devez définir la réponse au-dessus de $ this -> _ jsonHelper-> jsonEncode (['default_country' => $ country, 'state' => $ state,]) code dans le contrôleur
Rakesh Jesadiya
1
dans le cas ci-dessus, default_country et l'état reviennent de la réponse
Rakesh Jesadiya
12
La réponse acceptée est bonne, mais je pense qu'il pourrait être utile de profiter de la validation js offerte par le noyau magento. Donc, essayez d'utiliser le script js ci-dessous:
<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'oubliez pas que le contrôleur doit retourner une réponse JSON comme:
Réponses:
Vous pouvez simplement définir le code ci-dessous dans votre fichier phtml pour utiliser ajax, vous devez changer votre customurl dans le code ci-dessous,
à l'intérieur de la méthode execute () de votre fichier contrôleur ,
la source
La réponse acceptée est bonne, mais je pense qu'il pourrait être utile de profiter de la validation js offerte par le noyau magento. Donc, essayez d'utiliser le script js ci-dessous:
N'oubliez pas que le contrôleur doit retourner une réponse JSON comme:
la source