AJAX ڈیٹا کے لیے متحرک صفحہ بندی
ویب ایپلیکیشنز میں، صارف کے تجربے کو بڑھانے کے لیے بڑے ڈیٹاسیٹس کو مؤثر طریقے سے ہینڈل کرنا بہت ضروری ہے۔ جب AJAX درخواستوں کے ذریعے حاصل کردہ ڈیٹا کو ظاہر کرنے کی بات آتی ہے، تو صفحہ بندی صارف کے انٹرفیس کو صاف اور قابل انتظام رکھنے کے بہترین حلوں میں سے ایک ہے۔ ڈیٹا کو چھوٹے ٹکڑوں میں تقسیم کرکے، صفحہ بندی صارفین کو بہت زیادہ مواد کے ساتھ صفحہ کو مغلوب کیے بغیر فہرست میں آسانی سے تشریف لے جانے کی اجازت دیتی ہے۔
JavaScript اور jQuery صفحہ بندی کو لاگو کرنے کے لیے طاقتور ٹولز پیش کرتے ہیں، خاص طور پر جب AJAX کا استعمال کرتے ہوئے سرور سے ڈیٹا کو متحرک طور پر بازیافت کیا جا رہا ہو۔ یہ ٹیکنالوجیز ڈویلپرز کو صارف کے تعامل کی بنیاد پر ہر صفحہ پر ڈیٹا کا صرف ایک ذیلی سیٹ دکھا کر بڑے ڈیٹا سیٹس کا نظم کرنے کی اجازت دیتی ہیں۔
چھانٹنا، فلٹرنگ، اور تلاش کی خصوصیات کو یکجا کرنا صارف کے تجربے کو مزید تقویت بخشتا ہے۔ بڑے ڈیٹا سیٹس کی رسائی کو بہتر بنانے کے لیے ناموں یا محکموں جیسی صفات کی بنیاد پر ڈیٹا کو چھانٹنا، زمروں کے لحاظ سے فلٹر کرنا، اور عالمی تلاش کو فعال کرنا ضروری ہے۔ صفحہ بندی کے ساتھ مل کر، یہ تکنیکیں ڈیٹا کے بہترین انتظام کو یقینی بناتی ہیں۔
اس گائیڈ میں، ہم جانیں گے کہ JavaScript/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('click', function() {...}); یہ کمانڈ کسی عنصر پر مخصوص واقعہ (مثلاً ایک کلک) کو سنتا ہے۔ یہاں، یہ صفحہ بندی کے بٹنوں کو صارف کے کلکس پر ردعمل ظاہر کرنے کی اجازت دیتا ہے، جس سے صفحہ کی رینڈرنگ شروع ہوتی ہے۔ |
forEach() | paginatedData.forEach(function(mployee) {...}); یہ کمانڈ ملازمین کی صفوں پر اعادہ کرتا ہے، ہر عنصر پر ایک فنکشن چلاتا ہے۔ صفحہ بندی والے ڈیٹا میں ہر ملازم کے پروفائل کو پیش کرنے کے لیے یہ ضروری ہے۔ |
fetch() | بازیافت کریں('./assets/employeeDirectory.json') fetch کمانڈ ڈیٹا کو غیر مطابقت پذیری سے بازیافت کرنے کے لیے HTTP درخواست شروع کرتی ہے۔ یہاں، یہ AJAX کے ذریعے JSON فائل سے ملازم کا ڈیٹا لوڈ کرنے کے لیے استعمال ہوتا ہے۔ |
on() | $('#صفحہ بندی li').on('click', function() {...}); یہ jQuery کمانڈ ایونٹ ہینڈلرز کو عناصر سے منسلک کرتی ہے۔ اس مثال میں، یہ صارف کو مختلف صفحہ نمبروں پر کلک کرنے اور متعلقہ ڈیٹا لوڈ کرنے کی اجازت دے کر صفحہ بندی کو قابل بناتا ہے۔ |
JavaScript/jQuery میں صفحہ بندی کو سمجھنا اور AJAX کے ساتھ ترتیب دینا
اوپر فراہم کردہ اسکرپٹس کا مقصد بڑے ڈیٹاسیٹس کو مؤثر طریقے سے استعمال کرکے ڈسپلے کرنے کے مسئلے کو حل کرنا ہے۔ صفحہ بندی اور متحرک ڈیٹا کی بازیافت AJAX. بنیادی تصور JSON فائل سے ملازمین کی فہرست کو بازیافت کرنے اور ڈیٹا کو قابل انتظام حصوں میں تقسیم کرنے کے گرد گھومتا ہے، جس سے صارفین صفحہ کو مغلوب کیے بغیر ان کے ذریعے نیویگیٹ کر سکتے ہیں۔ AJAX کا استعمال اس ڈیٹا کو غیر مطابقت پذیری سے حاصل کرنے کے لیے کیا جاتا ہے، ڈیٹا کے مختلف صفحات کے درمیان سوئچ کرتے وقت پورے صفحے کو دوبارہ لوڈ کرنے کی ضرورت کو روکتا ہے۔ یہ کارکردگی اور صارف کے تجربے کو برقرار رکھنے کے لیے اہم ہے۔
ڈیٹا حاصل کرنے کے بعد، موجودہ صفحہ کی بنیاد پر صرف ایک مخصوص ذیلی سیٹ پیش کرنا ضروری ہے۔ یہ استعمال کرکے حاصل کیا جاتا ہے۔ ٹکڑا () فنکشن، جو اس صفحہ کے لیے مناسب ملازمین کو ظاہر کرنے کے لیے ڈیٹا کی صف کا ایک حصہ نکالتا ہے۔ مثال کے طور پر، اگر 50 ملازمین ہیں اور صارف فی صفحہ 8 آئٹمز دیکھنے کا انتخاب کرتا ہے، تو اسکرپٹ صرف صفحہ 1 پر 1-8، صفحہ 2 پر 9-16، وغیرہ کو ظاہر کرے گا۔ یہ نقطہ نظر صارف کو اعداد و شمار کو چھوٹے حصوں میں منتقل کرنے کی اجازت دیتا ہے، صفحہ لوڈ کے اوقات اور نیویگیشن دونوں کو بہتر بناتا ہے۔
دی صفحہ بندی کنٹرولز خود کو متحرک طور پر جاوا اسکرپٹ کا استعمال کرتے ہوئے تیار کیا جاتا ہے۔ صفحات کی کل تعداد کا حساب کل ڈیٹا کی لمبائی اور فی صفحہ آئٹمز کی بنیاد پر کیا جاتا ہے۔ اس کا استعمال کرتے ہوئے سنبھالا جاتا ہے۔ Math.ceil() فنکشن، جو اس بات کو یقینی بناتا ہے کہ اگر ضروری ہو تو باقی ملازمین کو اضافی صفحہ پر رکھا جائے۔ اس کے بعد ہر صفحہ کے بٹن کو رینڈر کیا جاتا ہے، جس سے صارفین یہ منتخب کر سکتے ہیں کہ وہ کون سا صفحہ دیکھنا چاہتے ہیں۔ ایونٹ کے سننے والے ان بٹنوں کے ساتھ منسلک ہوتے ہیں، لہذا جب کلک کیا جاتا ہے، تو ملازمین کا مناسب ذیلی سیٹ اسکرین پر ظاہر ہوتا ہے۔
صفحہ بندی کے علاوہ، اسکرپٹ بھی اجازت دیتے ہیں۔ چھانٹنا اور فلٹرنگ ڈیٹا کا صارفین ملازمین کو پہلے نام، آخری نام، یا محکمہ کے لحاظ سے ترتیب دے سکتے ہیں۔ جب صارف ڈراپ ڈاؤن مینو سے کوئی آپشن منتخب کرتا ہے، تو منتخب کردہ وصف کی بنیاد پر ڈیٹا کو دوبارہ ترتیب دیا جاتا ہے، اور ان تبدیلیوں کو ظاہر کرنے کے لیے صفحہ کو تازہ کیا جاتا ہے۔ اسی طرح، حروف تہجی کا فلٹر صارفین کو ایسے ملازمین کو دیکھنے کے لیے ایک خط پر کلک کرنے کی اجازت دیتا ہے جن کے نام اس حرف سے شروع ہوتے ہیں۔ چھانٹنے، فلٹر کرنے اور صفحہ بندی کا یہ مجموعہ بڑے ڈیٹا سیٹس کے انتظام کے لیے ایک انتہائی متحرک اور صارف دوست انٹرفیس بناتا ہے۔
حل 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: JavaScript اور AJAX کے ساتھ ماڈیولر صفحہ بندی
یہ حل ایک ماڈیولر JavaScript اپروچ کو ظاہر کرتا ہے جس میں 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 ریئل ٹائم اپ ڈیٹس کے لیے، ایک اور اہم پہلو کلائنٹ سائڈ کیشنگ کا استعمال کرتے ہوئے کارکردگی کو بڑھا رہا ہے۔ اس طریقہ کار میں بار بار سرور کی درخواستوں کی ضرورت کو کم کرنے کے لیے کلائنٹ کی طرف سے ڈیٹا کا ایک حصہ محفوظ کرنا شامل ہے۔ کیشنگ کے ساتھ، AJAX کے ذریعے ڈیٹا حاصل کرنے کے بعد، اسے مقامی میموری یا براؤزر اسٹوریج میں محفوظ کیا جا سکتا ہے، جب صارفین صفحات یا فلٹرز کے درمیان تشریف لے جاتے ہیں تو بعد میں تیزی سے رسائی حاصل کر سکتے ہیں۔ یہ سرور کا بوجھ کم کرتا ہے اور صفحہ بندی کے نظام کی ردعمل کو نمایاں طور پر بہتر کرتا ہے۔
کیشنگ کو لاگو کرنا خاص طور پر اس وقت مفید ہو سکتا ہے جب ڈیٹا سیٹ بڑا ہو اور کبھی کبھار تبدیل ہو۔ مثال کے طور پر، آپ تمام ڈیٹا ایک بار حاصل کر سکتے ہیں، جاوا اسکرپٹ متغیرات کا استعمال کرتے ہوئے اسے مقامی طور پر اسٹور کر سکتے ہیں یا مقامی اسٹوریج، اور پھر اسے کیشڈ ڈیٹا سے صفحہ بندی کریں۔ یہ حکمت عملی ایک ہموار تجربہ فراہم کرتی ہے کیونکہ صفحات کو تبدیل کرنے یا فلٹرز لگانے کے لیے سرور کی نئی درخواستوں کی ضرورت نہیں ہوگی۔ اس کے بجائے، ڈیٹا کو مقامی کیش سے بازیافت کیا جاتا ہے، پروسیس کیا جاتا ہے، اور تقریباً فوری طور پر پیش کیا جاتا ہے۔
مزید یہ کہ کیشنگ کو دیگر متحرک خصوصیات کے ساتھ بھی جوڑا جا سکتا ہے جیسے فلٹرز تلاش کریں۔ اور چھانٹنا. ایک بار ڈیٹا کیش ہوجانے کے بعد، فلٹرز اور چھانٹی کا اطلاق براہ راست کیش کردہ ڈیٹاسیٹ پر کیا جاسکتا ہے۔ اس طرح، صارفین سرور سے ڈیٹا کو دوبارہ حاصل کرنے کی ضرورت کے بغیر محکمے، نام، یا دیگر صفات کے مطابق ملازمین کو فلٹر کر سکتے ہیں۔ کیشنگ کو لاگو کرنے سے بینڈوڈتھ کا استعمال کم ہو جاتا ہے اور یہ ان صورتوں میں انتہائی فائدہ مند ثابت ہو سکتا ہے جہاں نیٹ ورک میں تاخیر ایک تشویش کا باعث ہو، جو ایک ہموار براؤزنگ کا تجربہ فراہم کرتی ہے۔
AJAX صفحہ بندی اور کیشنگ کے بارے میں عام سوالات
- صفحہ بندی کے ساتھ کلائنٹ سائیڈ کیشنگ کیسے کام کرتی ہے؟
- کلائنٹ سائیڈ کیشنگ پہلی بار استعمال کرنے کے بعد ڈیٹا کو مقامی طور پر اسٹور کرکے کام کرتی ہے۔ localStorage یا جاوا اسکرپٹ متغیر۔ یہ ڈیٹا کے ذریعے صفحہ بندی کرتے وقت بعد میں آنے والی AJAX کالوں کی ضرورت کو ختم کر دیتا ہے۔
- AJAX صفحہ بندی میں کلائنٹ سائیڈ کیشنگ کے کیا فوائد ہیں؟
- کلائنٹ سائیڈ کیشنگ سرور کا بوجھ کم کرکے اور صفحہ نیویگیشن کو تیز تر بنا کر کارکردگی کو بہتر بناتی ہے۔ ڈیٹا ایک بار حاصل کیا جاتا ہے اور مقامی طور پر ذخیرہ کیا جاتا ہے، جو صفحات کے درمیان سوئچ کرنے یا فلٹرز لگانے پر صارف کے تجربے کو بہتر بناتا ہے۔
- کیا کیشڈ ڈیٹا کو تلاش اور چھانٹنے کے لیے استعمال کیا جا سکتا ہے؟
- ہاں، ایک بار ڈیٹا کیش ہوجانے کے بعد، اس کے لیے استعمال کیا جاسکتا ہے۔ filtering اور sorting مقامی طور پر اضافی سرور کی درخواستوں کے بغیر۔ اس کے نتیجے میں صارفین کے لیے ایک تیز اور زیادہ ذمہ دار انٹرفیس ہوتا ہے۔
- کیا کیشنگ ڈیٹا سیٹس کو اکثر تبدیل کرنے کے لیے موزوں ہے؟
- کیشنگ ڈیٹاسیٹس کے لیے سب سے زیادہ مؤثر ہے جو کبھی کبھار تبدیل ہوتے ہیں۔ متحرک ڈیٹا سیٹس کے لیے، کیشنگ اب بھی استعمال کی جا سکتی ہے لیکن ڈیٹا کی مستقل مزاجی کو یقینی بنانے کے لیے اسے وقتاً فوقتاً یا مخصوص محرکات پر تازہ کرنے کی ضرورت ہوگی۔
- آپ کیشڈ ڈیٹا کو کیسے صاف یا اپ ڈیٹ کرتے ہیں؟
- کیشڈ ڈیٹا کو دستی طور پر ہٹا کر صاف یا اپ ڈیٹ کیا جا سکتا ہے۔ localStorage یا ایک نئی AJAX درخواست کے ذریعے ڈیٹاسیٹ کو تازہ کرنا۔ مثال کے طور پر کال کرنا localStorage.clear() تمام ذخیرہ شدہ ڈیٹا کو صاف کر دے گا۔
نافذ کرنا صفحہ بندی کے ذریعے حاصل کردہ ڈیٹا لسٹ میں AJAX، JavaScript اور jQuery کو مؤثر طریقے سے استعمال کیا جا سکتا ہے۔ چھانٹنا اور فلٹرنگ جیسی خصوصیات کو یکجا کرکے، صارف بڑے ڈیٹاسیٹس کو مؤثر طریقے سے منظم کر سکتے ہیں۔ یہ طریقہ ڈیٹا کو چھوٹے صفحات میں تقسیم کرتا ہے، جس سے صارفین انٹرفیس کو مغلوب کیے بغیر مختلف حصوں میں تشریف لے جاسکتے ہیں۔ مزید برآں، کلائنٹ سائیڈ تکنیکوں کو شامل کرکے، دونوں کو بہتر بنا کر کارکردگی کو بڑھانا ممکن ہے۔ تلاش کریں اور لوڈ اوقات۔
موثر ڈیٹا ہینڈلنگ پر حتمی خیالات
صفحہ بندی کو متحرک ڈیٹا کی بازیافت میں شامل کرنا کارکردگی اور صارف کے تجربے دونوں کو بڑھاتا ہے۔ JavaScript/jQuery کا استعمال کرتے ہوئے، ڈیٹا کو قابل انتظام حصوں میں تقسیم کیا جا سکتا ہے، جس سے صارفین کے لیے بڑے ڈیٹا سیٹس کے ساتھ بات چیت کرنا آسان ہو جاتا ہے۔ یہ صفحہ لوڈ کرنے کا وقت کم کرتا ہے اور نیویگیشن کا ایک ہموار تجربہ فراہم کرتا ہے۔
صفحہ بندی کے علاوہ، چھانٹنے اور فلٹرنگ کی خصوصیات کو یکجا کرنے سے صارفین اپنی تلاش کو مؤثر طریقے سے بہتر بنا سکتے ہیں۔ یہ یقینی بناتا ہے کہ متحرک ڈیٹا تک رسائی نہ صرف آسان ہے بلکہ اسے صارف دوست انداز میں بھی پیش کیا گیا ہے۔ کلائنٹ سائیڈ آپٹیمائزیشن کا استعمال سسٹم کی مجموعی ردعمل کو مزید بہتر بناتا ہے۔
حوالہ جات اور وسائل
- کا ایک جائزہ فراہم کرتا ہے۔ twbsصفحہ jQuery کے ساتھ صفحہ بندی کو لاگو کرنے کے لیے استعمال ہونے والا طریقہ اور اس میں کام کرنے والی مثالیں شامل ہیں۔ آپ پر مزید تفصیلات دریافت کر سکتے ہیں۔ JavaTpoint - صفحہ بندی کی مثال .
- JavaScript/jQuery کا استعمال کرتے ہوئے AJAX پر مبنی متحرک ڈیٹا حاصل کرنے کے لیے عمومی دستاویزات اور مثالیں یہاں مل سکتی ہیں۔ jQuery AJAX دستاویزات .
- فلٹرنگ اور چھانٹی کی خصوصیات کو نافذ کرنے کے لئے سرکاری دستاویزات اور سبق تک رسائی حاصل کی جا سکتی ہے MDN Web Docs - Array Sort .
- AJAX کے ساتھ صفحہ بندی اور متحرک ڈیٹا فلٹرنگ کو ہینڈل کرنے کی یہ مثال موثر ویب ایپلیکیشنز کی ساخت کے بارے میں ایک عملی رہنما فراہم کرتی ہے۔ پر مزید جانیں۔ W3Schools AJAX ٹیوٹوریل .