ম্যাজেন্টো ২.১.০-তে কীভাবে একটি সাধারণ এজ্যাক্স কল করবেন


11

আমি আমার পিএইচটিএমএল ফাইলের একটিতে একটি সাধারণ বোতাম যুক্ত করেছি।

<input type='button' name='emq_zip_btn' class='emq_zip_btn' value='Go'>

আমি একটি কাস্টম মডিউল (বেদ_মায়মডিউল) থেকে একটি কাস্টম জেএস ফাইল ("emq.js") যুক্ত করেছি:

require([
    "jquery",
    "jquery/ui"
], function($v){
//<![CDATA[
    $v = jQuery.noConflict();
    $v(document).ready(function() 
    {
        console.log('jquery loaded from emq.js');
        $v(".emq_zip_btn").on('click',function(e)
        {
            console.log('clicked');
        });
    });
//]]>
});

আমি যখন উপরের বোতামটিতে ক্লিক করি তখন কনসোলে "ক্লিক করা" মুদ্রিত হয় অর্থাৎ jQuery সঠিকভাবে কাজ করছে।

এখানে একটি কাস্টম মডিউল Ved_Mymodule থেকে একটি নিয়ামক ফাইল রয়েছে:

বেদ \ Mymodule \ কন্ট্রোলার \ ইনডেক্স \ index.php:

<?php

namespace Ved\Mymodule\Controller\Index;

use Ved\Mymodule\Model\NewsFactory;
use Magento\Framework\App\Action\Action;
use Magento\Framework\App\Action\Context;

class Index extends Action
{
    /**
     * @var \Tutorial\SimpleNews\Model\NewsFactory
     */
    protected $_modelNewsFactory;

    /**
     * @param Context $context
     * @param NewsFactory $modelNewsFactory
     */
    public function __construct(
        Context $context,
        NewsFactory $modelNewsFactory
    ) {
        parent::__construct($context);
        $this->_modelNewsFactory = $modelNewsFactory;
    }

    public function execute()
    {

    }
}

বেদ / Mymodule জন্য / etc / ফ্রন্টএন্ড / routes.xml:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:noNamespaceSchemaLocation="../../../../../../lib/internal/Magento/Framework/
App/etc/routes.xsd">
    <router id="standard">
        <route id="news" frontName="news">
            <module name="Ved_Mymodule" />
        </route>
    </router>

আমার প্রশ্ন হ'ল কীভাবে এই নিয়ন্ত্রণকারী পদ্ধতি থেকে কোনও ডেটা ফিরিয়ে আনতে হবে এবং তারপরে jQuery এর মাধ্যমে এটি অ্যাক্সেস করতে হবে অর্থাৎ কীভাবে সেই বোতামটি ক্লিক করার পরে একটি সাধারণ এজ্যাক্স কল করা যায়।


বেদু আপনি দয়া করে কী ব্যাখ্যা করতে পারেন আমি পণ্যের বিবরণ পৃষ্ঠায় ক্যাকটম চেকবক্স যুক্ত করব checked যখন পরীক্ষা করা হয়েছিল আমি prod 0.50 প্রোডাক্ট দাম যুক্ত করতে চাই যা কার্টে আপডেট পাবে
অশ্বিনী

উত্তর:


19

এটি কীভাবে করবেন তার নীচে উদাহরণ রয়েছে, দয়া করে আপনার প্রয়োজনীয়তা অনুসারে এটি সংশোধন করুন।

আমি এর জন্য জেএস টেমপ্লেট ব্যবহার করেছি।

নিম্নলিখিত উদাহরণটি আপনার পিএইচটিএমএল ফাইলটিতে অ্যাজাক্স কার্যকারিতা ব্যবহার করে ড্রপ ডাউন তৈরি করবে।

আপনার জেএসে

define([
        'jquery',
        'underscore',
        'mage/template',
        'jquery/list-filter'
        ], function (
            $,
            _,
            template
        ) {
            function main(config, element) {
                var $element = $(element);
var YOUR_URL_HERE = config.AjaxUrl;
                $(document).on('click','yourID_Or_Class',function() {
                        var param = 'ajax=1';
                            $.ajax({
                                showLoader: true,
                                url: YOUR_URL_HERE,
                                data: param,
                                type: "POST",
                                dataType: 'json'
                            }).done(function (data) {
                                $('#test').removeClass('hideme');
                                var html = template('#test', {posts:data}); 
                                $('#test').html(html);
                            });
                    });
            };
        return main;
    });

নিয়ামক মধ্যে

public function __construct(
        Context $context,
        \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory
    ) {

        $this->resultJsonFactory = $resultJsonFactory;
        parent::__construct($context);
    }


    public function execute()
    {
        $result = $this->resultJsonFactory->create();
        if ($this->getRequest()->isAjax()) 
        {
            $test=Array
            (
                'Firstname' => 'What is your firstname',
                'Email' => 'What is your emailId',
                'Lastname' => 'What is your lastname',
                'Country' => 'Your Country'
            );
            return $result->setData($test);
        }
    }

আপনার পিএইচটিএমএল ফাইলের মধ্যে

<style>  
.hideme{display:none;}
</style>
<script type="text/x-magento-init">
        {
            "*": {
                "[Namespace]_[Modulename]/js/YOURFILE": {
                    "AjaxUrl": "<?php echo $block->getAjaxUrl(); ?>",
                }
            }
        }
</script>
<div id='test' class="hideme">
    <select>
      <% _.each(posts, function(text,value) { %>
         <option value="<%= value %>"><%= text %></option>
      <% }) %> 
     </select>
</div>

getAjaxUrl আপনার ব্লক ফাইলে কাজ করা উচিত যা আপনাকে ইউআরএল ফিরিয়ে দেয়

আশা করি এইটি কাজ করবে.


আপনার উত্তর করার জন্য আপনাকে ধন্যবাদ. You .জ্যাক্স পদ্ধতিটির ইউআরএল প্যারামিটারে আমার কী উল্লেখ করা উচিত তা বলতে পারেন । আমার নিয়ামকের সামনের নাম সংবাদ।
বেদে

মডিউলফ্রন্টনাম / সূচক / নিউজ থিসি কাজ করবে যদি আপনার নিয়ামক পথটি [নেমস্পেস] / [মডিউলনাম] / নিয়ন্ত্রণকারী / ইন্ডেক্স / নিউজ.ফপি হয় আমি টেমপ্লেট ফাইল থেকে ইউআরএল পাস করতে পছন্দ করি যা $ this-> getUrl
একতা

হ্যাঁ ম্যাজেন্টো 1 এ, আমি কেবল টেমপ্লেট ফাইল থেকে urlও পাস করেছি। তবে ম্যাজেন্টোতে টেমপ্লেট ফাইলে 2 জ্যাকোয়ারি কোড কাজ করে না।
বেদে

আমি আমার উত্তরটি আপডেট করেছিলাম এটিতে আপনাকে জেএস লোড করার জন্য পিএইচটিএমএল ফাইলে কোড রয়েছে তবে আপনার জেএসটি আপনার মডিউল ফোল্ডারে থাকা উচিত
একতা পুরী

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