ম্যাজেন্টো 2: কাস্টম আকারে অ্যাজাক্স ফর্ম ব্যবহার করে ডেটা কীভাবে প্রেরণ করবেন?


11

কেউ কি আমাকে ব্যাখ্যা করতে পারেন যে আমি আজাক্স ব্যবহার করে ডেটা প্রেরণের জন্য কীভাবে ম্যাজেন্টো -2 পৃষ্ঠায় একটি সহজ ফর্ম তৈরি করতে পারি? আমার ইতিমধ্যে একটি ফর্ম এবং নিয়ামক পদক্ষেপ রয়েছে, এটি এজ্যাক্স না ব্যবহার করে ডেটা প্রেরণ করে।


আমি মনে করি এই লিঙ্কটি আপনাকে এখানে ক্লিক
পঙ্কজ শর্মা

আমার উত্তরটি দেখুন, এটি
গ্রহণীকৃতটিকে

প্রতিক্রিয়াতে ত্রুটি দেখানো হচ্ছে> অপরিজ্ঞাত সম্পত্তি:> নেমস্পেস \ মডিউল নাম \ কন্ট্রোলার \ সূচক ex সূচক \ ইন্টারসেপ্টর :: $ _ জসনহেল্পার উত্তরটি উন্নত করতে দয়া করে ভাগ করুন
রোহিত চৌহান

উত্তর:


15

এজ্যাক্সটি ব্যবহার করতে আপনি আপনার পিটিএইচটিএমএল ফাইলের নীচে কোডটি সেট করতে পারেন, আপনাকে নীচের কোডগুলিতে নিজের কাস্টমালটি পরিবর্তন করতে হবে ,

<script type="text/javascript">
    require(["jquery"],function($) {
        $(document).ready(function() {
            var customurl = "<?php echo $this->getUrl().'frontname/index/index'?>";
            $.ajax({
                url: customurl,
                type: 'POST',
                dataType: 'json',
                data: {
                    customdata1: 'test1',
                    customdata2: 'test2',
                },
            complete: function(response) {             
                country = response.responseJSON.default_country;
                state = response.responseJSON.state;         
                console.log(state+' '+country);   
                },
                error: function (xhr, status, errorThrown) {
                    console.log('Error happens. Try again.');
                }
            });
        });
    });
</script>

আপনার কন্ট্রোলার ফাইল এক্সিকিউট () পদ্ধতিতে,

<?php
 use Magento\Framework\Controller\ResultFactory;
 public function execute()
    {
        $resultPage = $this->resultFactory->create(ResultFactory::TYPE_PAGE);

        $response = $this->resultFactory->create(ResultFactory::TYPE_RAW);
        $response->setHeader('Content-type', 'text/plain');
        $country = 'india';
        $state = 'gujarat';
        $response->setContents(
            $this->_jsonHelper->jsonEncode(
                [
                    'default_country' => $country,
                    'state' => $state,
                ]
            )
        );
        return $response;
    } 

4
আপনি $ এটি-> getRequest () -> গেটপারাম ('কাস্টমডেটা 1') ব্যবহার করে নিয়ন্ত্রণকারীর ডেটা পেতে পারেন;
রাকেশ জেসাদিয়া

1
সাড়া স্ক্রিপ্ট প্রতিক্রিয়া হয়।
রাকেশ জেসাদিয়া

2
সম্পূর্ণ: ফাংশন (প্রতিক্রিয়া) এখানে আপনি প্রতিক্রিয়া পেয়েছেন।
রাকেশ জেসাদিয়া

1
আপনাকে উপরের মধ্যে প্রতিক্রিয়া নির্ধারণ করতে হবে - এটি -> _ jsonHelper-> jsonEncode (['default_country' => $ দেশ, 'রাষ্ট্র' => $ রাষ্ট্র,]) নিয়ন্ত্রক কোড
রকেশ জেসাদিয়া

1
উপরের ক্ষেত্রে
ডিফল্ট_গণনা

13

গৃহীত উত্তরটি ভাল, তবে আমি মনে করি যে জেএস বৈধতা যা ম্যাজেন্টো কোর অফার করে তার সুবিধা গ্রহণের পক্ষে কার্যকর হতে পারে। সুতরাং, জেএস স্ক্রিপ্টের নীচে ব্যবহার করার চেষ্টা করুন:

<script type="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 এর প্রতিক্রিয়া যেমন ফিরিয়ে দিতে হবে:

$response = $this->resultFactory
    ->create(\Magento\Framework\Controller\ResultFactory::TYPE_JSON)
    ->setData([
        'status'  => "ok",
        'message' => "form submitted correctly"
    ]);

return $response;

1
গৃহীত উত্তরের চেয়ে ভাল সমাধান। ধন্যবাদ মানুষ
মদিনা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.