JavaScript/jQuery সহ ডায়নামিক AJAX ডেটার জন্য পৃষ্ঠা সংখ্যা প্রয়োগ করা

Pagination

AJAX ডেটার জন্য ডায়নামিক পেজিনেশন

ওয়েব অ্যাপ্লিকেশনগুলিতে, ব্যবহারকারীর অভিজ্ঞতা বাড়ানোর জন্য দক্ষতার সাথে বড় ডেটাসেটগুলি পরিচালনা করা অত্যন্ত গুরুত্বপূর্ণ। AJAX অনুরোধের মাধ্যমে আনা ডেটা প্রদর্শনের ক্ষেত্রে, ব্যবহারকারীর ইন্টারফেসকে পরিষ্কার এবং পরিচালনাযোগ্য রাখার জন্য পেজিনেশন সেরা সমাধানগুলির মধ্যে একটি। ডেটাকে ছোট ছোট খণ্ডে বিভক্ত করে, পৃষ্ঠা সংখ্যা ব্যবহারকারীদের অনায়াসে তালিকার মধ্য দিয়ে নেভিগেট করার অনুমতি দেয় অত্যধিক বিষয়বস্তু সহ পৃষ্ঠাটিকে অপ্রতিরোধ্য না করে।

JavaScript এবং jQuery পেজিনেশন বাস্তবায়নের জন্য শক্তিশালী টুল অফার করে, বিশেষ করে যখন AJAX ব্যবহার করে সার্ভার থেকে ডাটা ডাইনামিকভাবে পুনরুদ্ধার করা হয়। এই প্রযুক্তিগুলি ডেভেলপারদের ব্যবহারকারীর মিথস্ক্রিয়ার উপর ভিত্তি করে প্রতিটি পৃষ্ঠায় ডেটার একটি উপসেট দেখিয়ে বড় ডেটাসেটগুলি পরিচালনা করতে দেয়৷

বাছাই, ফিল্টারিং এবং অনুসন্ধান কার্যকারিতাগুলিকে একীভূত করা ব্যবহারকারীর অভিজ্ঞতাকে আরও সমৃদ্ধ করে। নাম বা বিভাগের মতো বৈশিষ্ট্যের উপর ভিত্তি করে ডেটা বাছাই করা, বিভাগ দ্বারা ফিল্টার করা এবং একটি বিশ্বব্যাপী অনুসন্ধান সক্ষম করা বড় ডেটাসেটের অ্যাক্সেসযোগ্যতা উন্নত করার জন্য অপরিহার্য। পেজিনেশনের সাথে মিলিত, এই কৌশলগুলি সর্বোত্তম ডেটা ব্যবস্থাপনা নিশ্চিত করে।

এই নির্দেশিকাটিতে, আমরা জাভাস্ক্রিপ্ট/jQuery ব্যবহার করে একটি গতিশীলভাবে আনা ডেটাসেটে পৃষ্ঠা সংখ্যা কীভাবে প্রয়োগ করতে হয় তা অন্বেষণ করব, আপনাকে আরও দক্ষতার সাথে ডেটা প্রদর্শন নিয়ন্ত্রণ করার একটি সমাধান প্রদান করবে। আমরা সম্ভাব্য সমস্যাগুলি নিয়েও আলোচনা করব, যেমন ফিল্টারগুলিকে একীভূত করা, বাছাই করা এবং ত্রুটিগুলি পরিচালনা করা, বড় ডেটাসেটগুলি পরিচালনা করার জন্য একটি ব্যাপক পদ্ধতির প্রস্তাব দেওয়া৷

আদেশ ব্যবহারের উদাহরণ
slice() var paginatedData = data.slice(start, end);এই কমান্ডটি অ্যারের একটি অংশ বের করতে ব্যবহৃত হয়। এই উদাহরণে, বর্তমান পৃষ্ঠায় প্রদর্শনের জন্য কর্মচারীদের একটি উপসেট নির্বাচন করে ডেটা পেজিনেট করার জন্য নিযুক্ত করা হয়।
Math.ceil() var totalPages = Math.ceil(totalItems/itemsPerPage);এটি একটি সংখ্যাকে নিকটতম পূর্ণসংখ্যা পর্যন্ত বৃত্তাকার করে। প্রতি পৃষ্ঠায় আইটেমগুলির উপর ভিত্তি করে সমস্ত ডেটা মিটমাট করার জন্য প্রয়োজনীয় পৃষ্ঠাগুলির সঠিক সংখ্যা নির্ধারণের জন্য এটি পৃষ্ঠা সংখ্যার জন্য গুরুত্বপূর্ণ।
innerHTML container.innerHTML = '';এই কমান্ডটি সরাসরি একটি উপাদানের HTML বিষয়বস্তুকে ম্যানিপুলেট করে। নির্বাচিত পৃষ্ঠার জন্য কর্মচারীদের নতুন সেট রেন্ডার করার আগে কর্মচারী কন্টেইনার পরিষ্কার করতে এটি এখানে ব্যবহৃত হয়।
appendChild() container.appendChild(কার্ড);এই কমান্ডটি একটি পাত্রে একটি নতুন উপাদান (কার্ড) যুক্ত করতে ব্যবহৃত হয়। এটি বর্তমান পৃষ্ঠার জন্য গতিশীলভাবে কর্মচারী কার্ড তৈরি এবং প্রদর্শনের প্রক্রিয়ার অংশ।
addEventListener() pageBtn.addEventListener('ক্লিক', ফাংশন() {...});এই কমান্ডটি একটি উপাদানে একটি নির্দিষ্ট ইভেন্টের (যেমন, একটি ক্লিক) জন্য শোনে। এখানে, এটি পেজিনেশন বোতামগুলিকে ব্যবহারকারীর ক্লিকে প্রতিক্রিয়া জানাতে দেয়, পৃষ্ঠা রেন্ডারিংকে ট্রিগার করে।
forEach() paginatedData.forEach(ফাংশন(কর্মচারী) {...});এই কমান্ডটি কর্মীদের অ্যারের উপর পুনরাবৃত্তি করে, প্রতিটি উপাদানের উপর একটি ফাংশন নির্বাহ করে। প্রতিটি কর্মীর প্রোফাইল পেজিনেটেড ডেটাতে রেন্ডার করার জন্য এটি গুরুত্বপূর্ণ।
fetch() আনুন('./assets/employeeDirectory.json')আনয়ন কমান্ড অ্যাসিঙ্ক্রোনাসভাবে ডেটা পুনরুদ্ধার করার জন্য একটি HTTP অনুরোধ শুরু করে। এখানে, এটি AJAX এর মাধ্যমে JSON ফাইল থেকে কর্মচারী ডেটা লোড করতে ব্যবহৃত হয়।
on() $('#প্যাজিনেশন li').on('ক্লিক', ফাংশন() {...});এই jQuery কমান্ডটি ইভেন্ট হ্যান্ডলারদের উপাদানের সাথে সংযুক্ত করে। এই উদাহরণে, এটি ব্যবহারকারীকে বিভিন্ন পৃষ্ঠা নম্বরে ক্লিক করতে এবং সংশ্লিষ্ট ডেটা লোড করার অনুমতি দিয়ে পৃষ্ঠা সংখ্যাকরণ সক্ষম করে।

JavaScript/jQuery-এ AJAX-এর সাহায্যে পৃষ্ঠা সংখ্যা বোঝা এবং সাজানো

উপরে প্রদত্ত স্ক্রিপ্টগুলি ব্যবহার করে দক্ষতার সাথে বড় ডেটাসেটগুলি প্রদর্শনের সমস্যা সমাধান করার লক্ষ্য এবং এর সাথে ডাইনামিক ডেটা আনা হচ্ছে . মূল ধারণাটি একটি JSON ফাইল থেকে কর্মচারীদের একটি তালিকা পুনরুদ্ধার করা এবং ডেটাকে পরিচালনাযোগ্য বিভাগে বিভক্ত করার চারপাশে ঘোরে, যাতে ব্যবহারকারীরা পৃষ্ঠাটিকে অপ্রতিরোধ্য না করে তাদের মাধ্যমে নেভিগেট করতে দেয়৷ AJAX ব্যবহার করা হয় অ্যাসিঙ্ক্রোনাসভাবে এই ডেটা আনতে, ডেটার বিভিন্ন পৃষ্ঠার মধ্যে স্যুইচ করার সময় পুরো পৃষ্ঠাটি পুনরায় লোড করার প্রয়োজন রোধ করে। কর্মক্ষমতা এবং ব্যবহারকারীর অভিজ্ঞতা বজায় রাখার জন্য এটি অত্যন্ত গুরুত্বপূর্ণ।

একবার ডেটা আনা হলে, বর্তমান পৃষ্ঠার উপর ভিত্তি করে শুধুমাত্র একটি নির্দিষ্ট উপসেট রেন্ডার করা অপরিহার্য। এটি ব্যবহার করে অর্জন করা হয় ফাংশন, যা সেই পৃষ্ঠার জন্য উপযুক্ত কর্মীদের প্রদর্শন করতে ডেটা অ্যারের একটি অংশ বের করে। উদাহরণস্বরূপ, যদি 50 জন কর্মচারী থাকে এবং ব্যবহারকারী প্রতি পৃষ্ঠায় 8 টি আইটেম দেখার জন্য নির্বাচন করে, স্ক্রিপ্টটি শুধুমাত্র 1-8 পৃষ্ঠায় 1-8, পৃষ্ঠা 2-এ 9-16 এবং আরও অনেক কিছু প্রদর্শন করবে। এই পদ্ধতিটি ব্যবহারকারীকে পৃষ্ঠা লোডের সময় এবং নেভিগেশন উভয়ের উন্নতি করে, ছোট অংশে ডেটার মধ্য দিয়ে যেতে দেয়।

দ নিজেরাই জাভাস্ক্রিপ্ট ব্যবহার করে গতিশীলভাবে তৈরি হয়। পৃষ্ঠার মোট সংখ্যা গণনা করা হয় মোট ডেটা দৈর্ঘ্য এবং প্রতি পৃষ্ঠার আইটেমগুলির উপর ভিত্তি করে। এটি ব্যবহার করে পরিচালনা করা হয় ফাংশন, যা নিশ্চিত করে যে কোনও অবশিষ্ট কর্মচারী প্রয়োজনে একটি অতিরিক্ত পৃষ্ঠায় স্থাপন করা হয়েছে। প্রতিটি পৃষ্ঠা বোতাম তারপর রেন্ডার করা হয়, ব্যবহারকারীদের তারা কোন পৃষ্ঠা দেখতে চান তা নির্বাচন করার অনুমতি দেয়। ইভেন্ট শ্রোতারা এই বোতামগুলির সাথে সংযুক্ত থাকে, তাই ক্লিক করা হলে, কর্মীদের উপযুক্ত উপসেট পর্দায় প্রদর্শিত হয়।

পেজিনেশন ছাড়াও, স্ক্রিপ্টগুলিও অনুমতি দেয় এবং তথ্য ব্যবহারকারীরা প্রথম নাম, পদবি বা বিভাগ দ্বারা কর্মচারীদের সাজাতে পারেন। যখন ব্যবহারকারী ড্রপডাউন মেনু থেকে একটি বিকল্প নির্বাচন করেন, তখন নির্বাচিত বৈশিষ্ট্যের উপর ভিত্তি করে ডেটা পুনরায় সাজানো হয় এবং এই পরিবর্তনগুলি প্রতিফলিত করতে পৃষ্ঠাটি রিফ্রেশ করা হয়। একইভাবে, বর্ণমালা ফিল্টার ব্যবহারকারীদের একটি চিঠিতে ক্লিক করার অনুমতি দেয় যে কর্মচারীদের নাম সেই অক্ষর দিয়ে শুরু হয়। বাছাই, ফিল্টারিং এবং পেজিনেশনের এই সংমিশ্রণটি বড় ডেটাসেট পরিচালনার জন্য একটি অত্যন্ত গতিশীল এবং ব্যবহারকারী-বান্ধব ইন্টারফেস তৈরি করে।

সমাধান 1: jQuery-এর সাথে সহজ AJAX-ভিত্তিক পেজিনেশন

এই সমাধানটি গতিশীলভাবে ডেটা লোড করতে এবং কর্মীদের তালিকার জন্য পৃষ্ঠা সংখ্যা প্রয়োগ করার জন্য একটি মৌলিক jQuery এবং AJAX পদ্ধতির প্রদর্শন করে।

// Fetch data and implement pagination
$(document).ready(function() {
    var jsonData = [];
    var itemsPerPage = 8;
    var currentPage = 1;

    // Fetch employee data using AJAX
    $.ajax({
        url: './assets/employeeDirectory.json',
        method: 'GET',
        dataType: 'json',
        success: function(data) {
            jsonData = data;
            renderPage(jsonData, currentPage);
        },
        error: function() {
            alert('Failed to load data.');
        }
    });

    // Function to render employee data on the current page
    function renderPage(data, page) {
        var container = $('#profileContainer');
        container.empty();
        var start = (page - 1) * itemsPerPage;
        var end = start + itemsPerPage;
        var paginatedData = data.slice(start, end);

        paginatedData.forEach(function(employee) {
            var cardHtml = '<div class="card">' +
                '' +
                '<p>' + employee.department + '</p>' +
                '</div>';
            container.append(cardHtml);
        });

        updatePaginationButtons(data.length, page);
    }

    // Function to update pagination buttons
    function updatePaginationButtons(totalItems, currentPage) {
        var totalPages = Math.ceil(totalItems / itemsPerPage);
        $('#pagination').empty();

        for (var i = 1; i <= totalPages; i++) {
            $('#pagination').append('<li>' + i + '</li>');
        }

        $('#pagination li').on('click', function() {
            var page = $(this).text();
            currentPage = parseInt(page);
            renderPage(jsonData, currentPage);
        });
    }
});

সমাধান 2: জাভাস্ক্রিপ্ট এবং AJAX সহ মডুলার পেজিনেশন

এই সমাধানটি আরও ভাল পুনঃব্যবহারযোগ্যতার জন্য পৃথক ফাংশন সহ একটি মডুলার জাভাস্ক্রিপ্ট পদ্ধতি প্রদর্শন করে, AJAX ব্যবহার করে বাছাই করা, অনুসন্ধান করা এবং পেজিনেশন পরিচালনা করে।

// Fetch data and initialize pagination, sorting, and filtering
document.addEventListener('DOMContentLoaded', function() {
    var jsonData = [];
    var itemsPerPage = 8;
    var currentPage = 1;

    // Fetch employee data using AJAX
    fetch('./assets/employeeDirectory.json')
        .then(response => response.json())
        .then(data => {
            jsonData = data;
            renderPage(jsonData, currentPage);
        })
        .catch(() => alert('Failed to load data'));

    // Render the page with pagination
    function renderPage(data, page) {
        var container = document.getElementById('profileContainer');
        container.innerHTML = '';
        var start = (page - 1) * itemsPerPage;
        var end = start + itemsPerPage;
        var paginatedData = data.slice(start, end);

        paginatedData.forEach(function(employee) {
            var card = document.createElement('div');
            card.className = 'card';
            card.innerHTML = '' +
                            '<p>' + employee.department + '</p>';
            container.appendChild(card);
        });

        updatePaginationButtons(data.length, page);
    }

    // Function to create pagination controls
    function updatePaginationButtons(totalItems, currentPage) {
        var totalPages = Math.ceil(totalItems / itemsPerPage);
        var pagination = document.getElementById('pagination');
        pagination.innerHTML = '';

        for (let i = 1; i <= totalPages; i++) {
            let pageBtn = document.createElement('li');
            pageBtn.innerText = i;
            pageBtn.addEventListener('click', function() {
                currentPage = i;
                renderPage(jsonData, currentPage);
            });
            pagination.appendChild(pageBtn);
        }
    }
});

ক্লায়েন্ট-সাইড ক্যাশিংয়ের মাধ্যমে পৃষ্ঠা সংখ্যা বৃদ্ধি করা

যদিও প্রদত্ত উদাহরণটি সার্ভার-সাইডের মাধ্যমে আনার উপর ফোকাস করে রিয়েল-টাইম আপডেটের জন্য, আরেকটি গুরুত্বপূর্ণ দিক হল ক্লায়েন্ট-সাইড ক্যাশিং ব্যবহার করে কর্মক্ষমতা বৃদ্ধি করা। পুনরাবৃত্তিমূলক সার্ভার অনুরোধের প্রয়োজন কমাতে এই পদ্ধতিতে ক্লায়েন্ট সাইডে ডেটার একটি অংশ সংরক্ষণ করা জড়িত। ক্যাশিংয়ের মাধ্যমে, একবার AJAX এর মাধ্যমে ডেটা আনা হলে, এটি স্থানীয় মেমরি বা ব্রাউজার স্টোরেজে সংরক্ষণ করা যেতে পারে, ব্যবহারকারীরা যখন পৃষ্ঠা বা ফিল্টারগুলির মধ্যে নেভিগেট করে তখন দ্রুত পরবর্তী অ্যাক্সেসের অনুমতি দেয়। এটি সার্ভার লোড হ্রাস করে এবং উল্লেখযোগ্যভাবে পেজিনেশন সিস্টেমের প্রতিক্রিয়াশীলতা উন্নত করে।

ক্যাশিং প্রয়োগ করা বিশেষভাবে উপযোগী হতে পারে যখন ডেটাসেট বড় হয় এবং কদাচিৎ পরিবর্তন হয়। উদাহরণস্বরূপ, আপনি একবার সমস্ত ডেটা আনতে পারেন, জাভাস্ক্রিপ্ট ভেরিয়েবল ব্যবহার করে স্থানীয়ভাবে সংরক্ষণ করতে পারেন বা , এবং তারপর ক্যাশে করা ডেটা থেকে এটিকে পেজিনেট করুন। এই কৌশলটি একটি মসৃণ অভিজ্ঞতা প্রদান করে কারণ পৃষ্ঠাগুলি পরিবর্তন করা বা ফিল্টার প্রয়োগ করার জন্য আর নতুন সার্ভারের অনুরোধের প্রয়োজন হবে না। পরিবর্তে, স্থানীয় ক্যাশে থেকে ডেটা পুনরুদ্ধার করা হয়, প্রক্রিয়া করা হয় এবং প্রায় সঙ্গে সঙ্গে রেন্ডার করা হয়।

তদুপরি, ক্যাশিং অন্যান্য গতিশীল বৈশিষ্ট্যগুলির সাথেও মিলিত হতে পারে এবং বাছাই। একবার ডেটা ক্যাশে করা হলে, ফিল্টার এবং বাছাই সরাসরি ক্যাশে করা ডেটাসেটে প্রয়োগ করা যেতে পারে। এইভাবে, ব্যবহারকারীরা সার্ভার থেকে ডেটা পুনঃআনয়নের প্রয়োজন ছাড়াই বিভাগ, নাম বা অন্যান্য বৈশিষ্ট্য দ্বারা কর্মচারীদের ফিল্টার করতে পারেন। ক্যাশিং প্রয়োগ করা ব্যান্ডউইথের ব্যবহার হ্রাস করে এবং যেখানে নেটওয়ার্ক লেটেন্সি একটি উদ্বেগের বিষয়, সেখানে অত্যন্ত উপকারী হতে পারে, একটি বিরামহীন ব্রাউজিং অভিজ্ঞতা প্রদান করে।

  1. পেজিনেশনের সাথে ক্লায়েন্ট-সাইড ক্যাশিং কীভাবে কাজ করে?
  2. ক্লায়েন্ট-সাইড ক্যাশিং প্রথম ব্যবহার করার পরে স্থানীয়ভাবে ডেটা সংরক্ষণ করে কাজ করে অথবা একটি জাভাস্ক্রিপ্ট ভেরিয়েবল। এটি ডেটার মাধ্যমে পেজিনেশন করার সময় পরবর্তী AJAX কলগুলির প্রয়োজনীয়তা দূর করে।
  3. AJAX পেজিনেশনে ক্লায়েন্ট-সাইড ক্যাশিংয়ের সুবিধাগুলি কী কী?
  4. ক্লায়েন্ট-সাইড ক্যাশিং সার্ভারের লোড কমিয়ে এবং দ্রুত পৃষ্ঠা নেভিগেশন করে কর্মক্ষমতা উন্নত করে। ডেটা একবার আনা হয় এবং স্থানীয়ভাবে সংরক্ষণ করা হয়, যা পৃষ্ঠাগুলির মধ্যে স্যুইচ করার সময় বা ফিল্টার প্রয়োগ করার সময় ব্যবহারকারীর অভিজ্ঞতা বাড়ায়।
  5. ক্যাশে ডেটা অনুসন্ধান এবং সাজানোর জন্য ব্যবহার করা যেতে পারে?
  6. হ্যাঁ, একবার ডেটা ক্যাশ হয়ে গেলে, এটি ব্যবহার করা যেতে পারে এবং অতিরিক্ত সার্ভার অনুরোধ ছাড়াই স্থানীয়ভাবে। এটি ব্যবহারকারীদের জন্য একটি দ্রুত এবং আরো প্রতিক্রিয়াশীল ইন্টারফেসের ফলে।
  7. ঘন ঘন ডেটাসেট পরিবর্তন করার জন্য ক্যাশিং উপযুক্ত?
  8. কদাচিৎ পরিবর্তন হওয়া ডেটাসেটের জন্য ক্যাশিং সবচেয়ে কার্যকর। গতিশীল ডেটাসেটের জন্য, ক্যাশিং এখনও ব্যবহার করা যেতে পারে তবে ডেটা সামঞ্জস্য নিশ্চিত করতে পর্যায়ক্রমে বা নির্দিষ্ট ট্রিগারগুলিতে রিফ্রেশ করতে হবে।
  9. আপনি কিভাবে ক্যাশে করা ডেটা সাফ বা আপডেট করবেন?
  10. ক্যাশে করা ডেটা ম্যানুয়ালি মুছে দিয়ে সাফ বা আপডেট করা যেতে পারে অথবা একটি নতুন AJAX অনুরোধের মাধ্যমে ডেটাসেট রিফ্রেশ করা। উদাহরণস্বরূপ, কল করা সমস্ত সংরক্ষিত ডেটা সাফ করবে।

দক্ষ ডেটা পরিচালনার বিষয়ে চূড়ান্ত চিন্তাভাবনা

ডায়নামিক ডেটা আনয়নে পেজিনেশন অন্তর্ভুক্ত করা কর্মক্ষমতা এবং ব্যবহারকারীর অভিজ্ঞতা উভয়ই উন্নত করে। JavaScript/jQuery ব্যবহার করে, ডেটাকে পরিচালনাযোগ্য খণ্ডে বিভক্ত করা যেতে পারে, যা ব্যবহারকারীদের জন্য বড় ডেটাসেটের সাথে যোগাযোগ করা সহজ করে তোলে। এটি পৃষ্ঠা লোডের সময় হ্রাস করে এবং একটি মসৃণ নেভিগেশন অভিজ্ঞতা প্রদান করে।

পেজিনেশন ছাড়াও, বাছাই এবং ফিল্টারিং বৈশিষ্ট্যগুলিকে একত্রিত করা ব্যবহারকারীদের দক্ষতার সাথে তাদের অনুসন্ধান পরিমার্জন করতে দেয়। এটি নিশ্চিত করে যে গতিশীল ডেটা কেবল অ্যাক্সেস করা সহজ নয় বরং ব্যবহারকারী-বান্ধব পদ্ধতিতেও উপস্থাপিত হয়। ক্লায়েন্ট-সাইড অপ্টিমাইজেশান ব্যবহার করা সিস্টেমের সামগ্রিক প্রতিক্রিয়াশীলতাকে আরও উন্নত করে।

  1. একটি ওভারভিউ প্রদান করে jQuery এর সাথে পেজিনেশন বাস্তবায়নের জন্য ব্যবহৃত পদ্ধতি এবং কাজের উদাহরণ অন্তর্ভুক্ত করে। আপনি আরো বিস্তারিত অন্বেষণ করতে পারেন JavaTpoint - পেজিনেশন উদাহরণ .
  2. জাভাস্ক্রিপ্ট/jQuery ব্যবহার করে AJAX-ভিত্তিক গতিশীল ডেটা আনার জন্য সাধারণ ডকুমেন্টেশন এবং উদাহরণ এখানে পাওয়া যাবে jQuery AJAX ডকুমেন্টেশন .
  3. ফিল্টারিং এবং বাছাই কার্যকারিতা বাস্তবায়নের জন্য অফিসিয়াল ডকুমেন্টেশন এবং টিউটোরিয়াল এখানে অ্যাক্সেস করা যেতে পারে MDN ওয়েব ডক্স - অ্যারে সাজান .
  4. AJAX-এর সাথে পেজিনেশন এবং ডাইনামিক ডেটা ফিল্টারিং পরিচালনার এই উদাহরণটি কীভাবে দক্ষ ওয়েব অ্যাপ্লিকেশনগুলিকে গঠন করতে হয় তার একটি ব্যবহারিক নির্দেশিকা প্রদান করে। এ আরও জানুন W3Schools AJAX টিউটোরিয়াল .