Magento 2: Jak wysyłać dane za pomocą formularza Ajax w formie niestandardowej?
11
Czy ktoś może mi wyjaśnić, w jaki sposób mogę utworzyć prosty formularz na stronie Magento-2 do wysyłania danych za pomocą Ajax? Mam już formularz i akcję kontrolera, która wysyła dane bez użycia ajax.
możesz pobrać dane do kontrolera za pomocą $ this-> getRequest () -> getParam ('customdata1');
Rakesh Jesadiya
1
odpowiedź dostaje odpowiedź skryptową.
Rakesh Jesadiya
2
complete: funkcja (odpowiedź) tutaj masz odpowiedź.
Rakesh Jesadiya
1
musisz ustawić odpowiedź w powyższym $ this -> _ jsonHelper-> jsonEncode (['default_country' => $ country, 'state' => $ stan,]) kod w kontrolerze
Rakesh Jesadiya
1
w powyższym przypadku kraj i kraj default_country powracają z odpowiedzi
Rakesh Jesadiya
13
Zaakceptowana odpowiedź jest dobra, ale myślę, że może być przydatna, skorzystaj z walidacji js, którą oferuje magento core. Spróbuj użyć poniższego skryptu 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>
Nie zapominaj, że kontroler musi zwrócić odpowiedź JSON, taką jak:
Odpowiedzi:
Możesz po prostu ustawić poniższy kod w pliku phtml, aby używać ajax, Musisz zmienić swój customurl w poniższym kodzie,
w pliku kontrolera metody execute () ,
źródło
Zaakceptowana odpowiedź jest dobra, ale myślę, że może być przydatna, skorzystaj z walidacji js, którą oferuje magento core. Spróbuj użyć poniższego skryptu js:
Nie zapominaj, że kontroler musi zwrócić odpowiedź JSON, taką jak:
źródło