ExtJS এর মধ্যে AJAX এবং Data Interaction অত্যন্ত গুরুত্বপূর্ণ ফিচার। এই ফিচারগুলো ডেটা লোড এবং সার্ভারের সাথে যোগাযোগ করতে ব্যবহৃত হয়। ExtJS AJAX পদ্ধতি এবং ডেটা ইন্টারঅ্যাকশন ফিচারগুলি সিস্টেমের ডেটাকে ক্লায়েন্ট-সাইডে দ্রুতভাবে লোড এবং আপডেট করতে সক্ষম করে, যা ব্যবহারকারীর অভিজ্ঞতাকে উন্নত করে।
AJAX (Asynchronous JavaScript and XML) হল একটি প্রযুক্তি যার মাধ্যমে ব্রাউজার সার্ভারের সাথে অ্যালাইনড (synchronously) না হয়ে পৃষ্ঠা রিফ্রেশ ছাড়াই ডেটা আদান-প্রদান করতে পারে। ExtJS এ AJAX রিকোয়েস্ট তৈরি করা হয় Ext.Ajax.request()
ব্যবহার করে।
Ext.Ajax.request({
url: 'server/data.json', // সার্ভারের URL
method: 'GET', // HTTP মেথড (GET, POST)
params: { // সার্ভারে পাঠানো প্যারামিটার
id: 1,
type: 'user'
},
success: function(response, opts) {
var obj = Ext.decode(response.responseText); // রেসপন্স ডিকোড করা
console.log('Server Response:', obj);
},
failure: function(response, opts) {
console.log('Server failed with status:', response.status);
}
});
এখানে:
url
: সার্ভারের URL যেখানে রিকোয়েস্ট পাঠানো হবে।method
: HTTP মেথড (GET বা POST)।params
: সার্ভারে পাঠানো প্যারামিটারগুলি।success
: সফল রেসপন্স প্রাপ্ত হলে এই ফাংশনটি কল হবে।failure
: যদি রিকোয়েস্ট ব্যর্থ হয় তবে এই ফাংশনটি কল হবে।ExtJS তে ডেটা ইন্টারঅ্যাকশন সাধারণত Store, Model, এবং Proxy এর মাধ্যমে পরিচালিত হয়। Store কম্পোনেন্ট ডেটাকে সঞ্চয় এবং পরিচালনা করে, Model ডেটার কাঠামো নির্ধারণ করে, এবং Proxy ডেটার উৎসের সাথে যোগাযোগের মাধ্যম হিসেবে কাজ করে (যেমন: সার্ভার, API, বা লোকাল ডেটা)।
Ext.define('MyApp.model.User', {
extend: 'Ext.data.Model',
fields: [
{ name: 'id', type: 'int' },
{ name: 'name', type: 'string' },
{ name: 'email', type: 'string' }
]
});
এখানে:
MyApp.model.User
একটি মডেল তৈরি করেছে যা id
, name
, এবং email
ফিল্ড ধারণ করে।Ext.create('Ext.data.Store', {
model: 'MyApp.model.User', // মডেল সংজ্ঞায়িত করা
storeId: 'userStore',
proxy: {
type: 'ajax', // AJAX রিকোয়েস্ট ব্যবহার
url: 'server/users.json', // ডেটা উৎসের URL
reader: {
type: 'json', // রেসপন্সের ফরম্যাট (JSON)
rootProperty: 'data' // JSON এর মধ্যে ডেটার অবস্থান
}
},
autoLoad: true // স্টোরটি স্বয়ংক্রিয়ভাবে লোড হবে
});
এখানে:
proxy
: ajax
টাইপ ব্যবহার করে সার্ভারের সাথে যোগাযোগ করা হচ্ছে। url
দিয়ে ডেটার উৎস নির্ধারণ করা হচ্ছে এবং reader
দিয়ে ডেটার ফরম্যাট (এখানে JSON) এবং ডেটার মূল অংশের অবস্থান (rootProperty
) উল্লেখ করা হয়েছে।autoLoad: true
: স্টোরটি লোড হওয়ার সময় এটি স্বয়ংক্রিয়ভাবে সার্ভার থেকে ডেটা লোড করবে।var store = Ext.getStore('userStore'); // স্টোর রেফারেন্স পাওয়া
store.load(); // স্টোর থেকে ডেটা লোড করা
store.each(function(record) { // প্রতিটি রেকর্ডের জন্য কাজ করা
console.log(record.get('name')); // 'name' ফিল্ডের মান
});
এখানে:
load()
: স্টোর থেকে ডেটা লোড করা হয়।each()
: প্রতিটি রেকর্ডের জন্য একটি ফাংশন কার্যকর করা হয়।ExtJS তে ডেটা ম্যানেজমেন্টের জন্য data binding এবং automatic updates এর মতো বৈশিষ্ট্য ব্যবহার করা হয়, যার মাধ্যমে স্টোরে ডেটা পরিবর্তিত হলে UI স্বয়ংক্রিয়ভাবে আপডেট হয়। Ext.data.Store
এবং Ext.data.Model
মডেলের মধ্যে ডেটা পরিবর্তন হলে এটি UI কম্পোনেন্টগুলোর সাথে সিনক্রোনাইজ হয়ে থাকে।
Ext.create('Ext.form.Panel', {
title: 'User Form',
renderTo: Ext.getBody(),
items: [{
xtype: 'textfield',
name: 'name',
fieldLabel: 'Name'
}],
store: Ext.create('Ext.data.Store', {
model: 'MyApp.model.User',
proxy: {
type: 'ajax',
url: 'server/users.json',
reader: {
type: 'json',
rootProperty: 'data'
}
}
}),
listeners: {
afterrender: function() {
var store = this.store;
store.load();
}
}
});
এখানে, store.load()
ব্যবহার করে স্টোরের ডেটা ফর্মে লোড করা হয়েছে এবং এর মাধ্যমে ডেটা ফিল্ডটি UI-তে শো করা হয়েছে।
AJAX রিকোয়েস্টে ত্রুটি (error) সঠিকভাবে হ্যান্ডল করা অত্যন্ত গুরুত্বপূর্ণ। ExtJS তে failure ফাংশন ব্যবহার করে সার্ভার থেকে ত্রুটি পাওয়া গেলে তা হ্যান্ডল করা যায়।
Ext.Ajax.request({
url: 'server/data.json',
method: 'GET',
success: function(response) {
var data = Ext.decode(response.responseText);
console.log('Data loaded:', data);
},
failure: function(response) {
Ext.Msg.alert('Error', 'Failed to load data from server.');
}
});
এখানে:
failure
: যদি সার্ভার থেকে কোনো ত্রুটি ঘটে (যেমন সার্ভার ব্যস্ত বা নেটওয়ার্ক সমস্যা), তখন একটি ত্রুটি বার্তা প্রদর্শন করবে।Ext.Ajax.request()
ব্যবহার করে সার্ভারের সাথে ডেটা আদান-প্রদান করা যায়। এটি সফল (success) বা ব্যর্থ (failure) রেসপন্স পেতে সাহায্য করে।এই ফিচারগুলি ব্যবহার করে আপনি ডেটার সাথে আরো উন্নত এবং ইন্টারঅ্যাকটিভ ইনটিগ্রেশন তৈরি করতে পারবেন, যা আপনার ExtJS অ্যাপ্লিকেশনকে আরও শক্তিশালী এবং দ্রুততর করবে।
AJAX (Asynchronous JavaScript and XML) একটি প্রযুক্তি যা ওয়েব পেজকে সার্ভার থেকে ডেটা আনার জন্য পৃষ্ঠার রিফ্রেশ না করেই ব্যাকগ্রাউন্ডে সার্ভারের সাথে যোগাযোগ করতে সহায়ক। ExtJS তে AJAX এবং Server Communication খুবই গুরুত্বপূর্ণ টুলস, যা ওয়েব অ্যাপ্লিকেশনকে দ্রুত এবং ইন্টারঅ্যাকটিভ করে তোলে। ExtJS এর Ext.Ajax
API সার্ভারের সাথে ডেটা পাঠানোর এবং গ্রহণ করার জন্য ব্যবহৃত হয়।
এই গাইডে, আমরা AJAX এর মাধ্যমে Server Communication এবং বিভিন্ন AJAX রিকোয়েস্ট পরিচালনা করার পদ্ধতি সম্পর্কে বিস্তারিত আলোচনা করব।
ExtJS তে Ext.Ajax
API সার্ভারের সাথে যোগাযোগের জন্য ব্যবহৃত হয়। এটি GET, POST, PUT, DELETE ইত্যাদি HTTP মেথড দিয়ে সার্ভারের সাথে ডেটা পাঠাতে পারে এবং সার্ভারের রেসপন্স গ্রহণ করতে সক্ষম।
Ext.Ajax.request({
url: 'server/endpoint', // সার্ভারের এন্ডপয়েন্ট URL
method: 'GET', // HTTP মেথড (GET, POST, PUT, DELETE)
params: { // পাঠানোর জন্য ডেটা
param1: 'value1',
param2: 'value2'
},
success: function(response) { // সার্ভার থেকে সফল রেসপন্স
var data = Ext.decode(response.responseText); // JSON রেসপন্স ডিকোড
console.log(data); // সার্ভার থেকে প্রাপ্ত ডেটা
},
failure: function(response) { // রিকোয়েস্ট ব্যর্থ হলে
Ext.Msg.alert('Error', 'Request failed');
}
});
ব্যাখ্যা:
url
: সার্ভারের এন্ডপয়েন্টের URL যেখানে রিকোয়েস্ট পাঠানো হবে।method
: HTTP মেথড (যেমন GET বা POST)।params
: ডেটা পাঠানোর জন্য প্যারামিটার।success
: রিকোয়েস্ট সফল হলে এই ফাংশন কল হবে, যেখানে সার্ভারের রেসপন্স পাওয়া যাবে।failure
: রিকোয়েস্ট ব্যর্থ হলে এই ফাংশন কল হবে।GET এবং POST দুটি মূল HTTP মেথড যা সার্ভারের সাথে যোগাযোগের জন্য ব্যবহার করা হয়।
GET রিকোয়েস্ট সার্ভার থেকে ডেটা আনার জন্য ব্যবহৃত হয়। GET রিকোয়েস্টে সাধারণত প্যারামিটার ইউআরএল এর মাধ্যমে পাঠানো হয়।
Ext.Ajax.request({
url: 'server/getData',
method: 'GET',
params: { id: 123 },
success: function(response) {
var data = Ext.decode(response.responseText);
console.log(data);
},
failure: function(response) {
Ext.Msg.alert('Error', 'Request failed');
}
});
POST রিকোয়েস্ট সাধারণত সার্ভারে ডেটা পাঠানোর জন্য ব্যবহৃত হয়, এবং এটি শরীরের (body) মধ্যে ডেটা পাঠায়।
Ext.Ajax.request({
url: 'server/saveData',
method: 'POST',
jsonData: { name: 'John Doe', email: 'john@example.com' }, // JSON ডেটা পাঠানো হচ্ছে
success: function(response) {
var data = Ext.decode(response.responseText);
console.log('Data saved successfully');
},
failure: function(response) {
Ext.Msg.alert('Error', 'Failed to save data');
}
});
jsonData
: এখানে POST রিকোয়েস্টে ডেটা JSON ফরম্যাটে পাঠানো হচ্ছে।
ফর্ম ডেটা সাবমিট করার জন্যও AJAX ব্যবহার করা যেতে পারে, যা ফর্মটি পূর্ণ হয়ে গেলে সার্ভারে ডেটা পাঠায়।
Ext.create('Ext.form.Panel', {
title: 'User Form',
width: 300,
bodyPadding: 10,
renderTo: Ext.getBody(),
items: [
{
xtype: 'textfield',
name: 'username',
fieldLabel: 'Username',
allowBlank: false
},
{
xtype: 'textfield',
name: 'email',
fieldLabel: 'Email',
vtype: 'email'
}
],
buttons: [
{
text: 'Submit',
handler: function() {
var form = this.up('form').getForm();
if (form.isValid()) {
// AJAX রিকোয়েস্ট দিয়ে ফর্মের ডেটা পাঠানো
Ext.Ajax.request({
url: 'server/submitForm',
method: 'POST',
jsonData: form.getValues(),
success: function(response) {
Ext.Msg.alert('Success', 'Form submitted successfully');
},
failure: function(response) {
Ext.Msg.alert('Error', 'Form submission failed');
}
});
} else {
Ext.Msg.alert('Error', 'Please fill all required fields');
}
}
}
]
});
এখানে, ফর্মের ডেটা jsonData
হিসেবে সার্ভারে পাঠানো হচ্ছে এবং ফর্মের সমস্ত ফিল্ড যাচাই করার জন্য form.isValid()
ব্যবহার করা হচ্ছে।
সার্ভারের রেসপন্স সাধারণত JSON বা XML ফরম্যাটে আসে। ExtJS Ext.decode()
এবং Ext.encode()
ফাংশন ব্যবহার করে JSON ডেটা রিড ও লেখার কাজ করে।
Ext.Ajax.request({
url: 'server/getData',
method: 'GET',
success: function(response) {
var data = Ext.decode(response.responseText); // JSON রেসপন্স ডিকোড করা
console.log(data); // প্রাপ্ত ডেটা প্রিন্ট করা
},
failure: function(response) {
Ext.Msg.alert('Error', 'Request failed');
}
});
Ext.decode(response.responseText)
: JSON রেসপন্স ডেটাকে অবজেক্টে রূপান্তরিত করে।Ext.encode(data)
: অবজেক্টকে JSON স্ট্রিং এ রূপান্তরিত করে।AJAX রিকোয়েস্টের সফল বা ব্যর্থতা হ্যান্ডল করার জন্য success এবং failure কলব্যাক ফাংশন ব্যবহার করা হয়। এর মাধ্যমে সার্ভার সাইডে কোনো ত্রুটি ঘটলে তা ধরতে পারি।
Ext.Ajax.request({
url: 'server/saveData',
method: 'POST',
jsonData: { name: 'John Doe' },
success: function(response) {
var data = Ext.decode(response.responseText);
Ext.Msg.alert('Success', 'Data saved');
},
failure: function(response) {
var errorMsg = response.statusText || 'Unknown error';
Ext.Msg.alert('Error', 'Failed to save data: ' + errorMsg);
}
});
এখানে response.statusText
এর মাধ্যমে ত্রুটি বার্তা রিটার্ন করা হচ্ছে যদি সার্ভারের কোনো সমস্যা থাকে।
Ext.Ajax
API সার্ভারের সাথে ডেটা যোগাযোগের জন্য ব্যবহৃত হয়।Ext.decode()
এবং Ext.encode()
ব্যবহৃত হয়।failure
ফাংশনের মাধ্যমে ত্রুটি হ্যান্ডল করা যায়।AJAX এবং Server Communication ব্যবহার করে, আপনি দ্রুত এবং কার্যকরীভাবে ডেটা হ্যান্ডলিং করতে পারবেন, যা অ্যাপ্লিকেশনকে দ্রুত এবং ইন্টারঅ্যাকটিভ করে তোলে।
Data Fetching এবং Submitting হল একটি অ্যাপ্লিকেশনের অন্যতম গুরুত্বপূর্ণ ফিচার, যা সার্ভার থেকে ডেটা আনা এবং সার্ভারে ডেটা প্রেরণ করতে ব্যবহৃত হয়। ExtJS তে, আপনি GET এবং POST রিকোয়েস্ট ব্যবহার করে ডেটা ফেচ এবং সাবমিট করতে পারেন। এটি AJAX (Asynchronous JavaScript and XML) কল ব্যবহার করে সার্ভারের সাথে যোগাযোগ করে এবং পেজ রিফ্রেশ না করেই ডেটা লোড বা সাবমিট করার সুযোগ দেয়।
এখানে, আমরা Ext.Ajax এবং Ext.data.Store ক্লাসের মাধ্যমে GET এবং POST রিকোয়েস্ট ব্যবহার করে ডেটা ফেচ এবং সাবমিট করার পদ্ধতি দেখবো।
GET Request সাধারণত সার্ভার থেকে ডেটা ফেচ করতে ব্যবহৃত হয়। ExtJS এ Ext.Ajax এর মাধ্যমে আপনি GET রিকোয়েস্ট করতে পারেন এবং সার্ভার থেকে ডেটা আনার জন্য callback functions ব্যবহার করতে পারেন।
Ext.Ajax.request({
url: 'https://api.example.com/data', // API বা সার্ভারের URL
method: 'GET', // GET রিকোয়েস্ট
success: function(response) {
var data = Ext.decode(response.responseText); // সার্ভার থেকে আসা JSON ডেটা ডিকোড করা
console.log('Data fetched:', data);
},
failure: function(response) {
console.log('Error fetching data:', response.status);
}
});
ব্যাখ্যা:
url
: GET রিকোয়েস্টের জন্য সার্ভারের URL।method
: HTTP মেথড হিসাবে GET
উল্লেখ করা হয়েছে।success
: রিকোয়েস্ট সফল হলে কলব্যাক ফাংশন। এখানে, ডেটা JSON আকারে ডিকোড করা হয়েছে।failure
: রিকোয়েস্ট ব্যর্থ হলে কলব্যাক ফাংশন। এখানে, ত্রুটির তথ্য লগ করা হচ্ছে।POST Request সাধারণত সার্ভারে ডেটা সাবমিট করতে ব্যবহৃত হয়। POST রিকোয়েস্টে, ইউজার ইনপুট বা অন্যান্য ডেটা সার্ভারে পাঠানো হয়। ExtJS তে Ext.Ajax ব্যবহার করে POST রিকোয়েস্ট করতে হয়।
Ext.Ajax.request({
url: 'https://api.example.com/submit', // API বা সার্ভারের URL
method: 'POST', // POST রিকোয়েস্ট
params: {
name: 'John Doe',
email: 'john.doe@example.com'
}, // ডেটা প্যারামিটার হিসাবে পাঠানো
success: function(response) {
console.log('Data submitted successfully:', response.responseText);
},
failure: function(response) {
console.log('Error submitting data:', response.status);
}
});
ব্যাখ্যা:
url
: POST রিকোয়েস্টের জন্য সার্ভারের URL।method
: HTTP মেথড হিসাবে POST
উল্লেখ করা হয়েছে।params
: পাঠানো ডেটা। এখানে name
এবং email
প্যারামিটার পাঠানো হচ্ছে।success
: রিকোয়েস্ট সফল হলে কলব্যাক ফাংশন, যেখানে সার্ভার থেকে প্রাপ্ত রেসপন্স প্রদর্শিত হচ্ছে।failure
: রিকোয়েস্ট ব্যর্থ হলে কলব্যাক ফাংশন।ExtJS এর Store ক্লাসটি ডেটা ম্যানেজমেন্ট এবং ফেচিংয়ের জন্য ব্যবহৃত হয়। Proxy কনফিগারেশন দিয়ে আপনি GET বা POST রিকোয়েস্টের মাধ্যমে স্টোরে ডেটা লোড করতে পারেন।
Ext.create('Ext.data.Store', {
storeId: 'userStore',
fields: ['id', 'name', 'email'],
proxy: {
type: 'ajax', // AJAX প্রক্সি ব্যবহার
url: 'https://api.example.com/users', // GET রিকোয়েস্টের URL
reader: {
type: 'json', // JSON ডেটা রিডার
rootProperty: 'users' // রেসপন্সের মধ্যে users আর্কাইভ থেকে ডেটা আসবে
}
},
autoLoad: true // স্টোর লোড হবে যখন অ্যাপ্লিকেশন শুরু হবে
});
এখানে:
proxy
: এটি ডেটা ফেচ করার জন্য AJAX রিকোয়েস্ট ব্যবহার করে।url
: GET রিকোয়েস্টের জন্য API URL।reader
: JSON রিডার সেট করা হয়েছে, যাতে সার্ভার থেকে আসা JSON ডেটা পড়া যায়।Ext.create('Ext.data.Store', {
storeId: 'userStore',
fields: ['id', 'name', 'email'],
proxy: {
type: 'ajax',
url: 'https://api.example.com/submit', // POST রিকোয়েস্টের URL
method: 'POST', // HTTP মেথড POST
writer: {
type: 'json',
writeAllFields: true // সব ফিল্ড লিখতে হবে
},
reader: {
type: 'json',
rootProperty: 'response'
}
},
data: [{ id: 1, name: 'John', email: 'john.doe@example.com' }],
autoSync: true // ডেটা সার্ভারে অটো সাবমিট হবে
});
এখানে:
method: 'POST'
: POST রিকোয়েস্ট ব্যবহার করা হয়েছে।writer
: POST রিকোয়েস্টের ডেটা পাঠানোর জন্য json
writer ব্যবহৃত হয়েছে।JSON হল ডেটা ফেচ এবং সাবমিট করার জন্য একটি জনপ্রিয় ফর্ম্যাট। ExtJS এ, সার্ভারের থেকে প্রাপ্ত JSON ডেটা reader ব্যবহার করে প্রসেস করা হয়।
Ext.Ajax.request({
url: 'https://api.example.com/data',
method: 'GET',
success: function(response) {
var data = Ext.decode(response.responseText); // JSON ডেটা ডিকোড করা
console.log('Data fetched:', data);
},
failure: function(response) {
console.log('Error fetching data:', response.status);
}
});
এখানে Ext.decode()
ব্যবহার করা হয়েছে, যা সার্ভারের JSON রেসপন্স ডেটাকে JavaScript অবজেক্টে রূপান্তরিত করবে।
GET বা POST রিকোয়েস্ট করার সময় সাধারণত কিছু ত্রুটি (Error) ঘটতে পারে, যেমন সার্ভার না পাওয়া, নেটওয়ার্ক সমস্যাসহ বিভিন্ন কারণে। এ ধরনের ত্রুটি হ্যান্ডলিংয়ের জন্য failure
কলব্যাক ফাংশন ব্যবহার করা হয়।
Ext.Ajax.request({
url: 'https://api.example.com/invalid-url',
method: 'GET',
success: function(response) {
var data = Ext.decode(response.responseText);
console.log('Data fetched:', data);
},
failure: function(response) {
if (response.status === 404) {
console.log('Error: Resource not found (404)');
} else if (response.status === 500) {
console.log('Error: Server error (500)');
} else {
console.log('Error:', response.statusText);
}
}
});
এখানে, failure
ফাংশনে সার্ভারের স্ট্যাটাস কোড অনুযায়ী ত্রুটি বার্তা প্রদর্শন করা হচ্ছে।
ExtJS তে GET এবং POST রিকোয়েস্ট ব্যবহার করে আপনি খুব সহজেই ডেটা ফেচ এবং সাবমিট করতে পারেন, যা আপনার অ্যাপ্লিকেশনকে আরও ইন্টারঅ্যাকটিভ এবং ডায়নামিক করে তোলে।
ExtJS ডেটা হ্যান্ডলিংয়ের জন্য একটি শক্তিশালী এবং নমনীয় প্ল্যাটফর্ম প্রদান করে। এটি JSON এবং XML ডেটা ফরম্যাটে ডেটা পরিচালনা করতে পারে, যা ওয়েব অ্যাপ্লিকেশনের জন্য গুরুত্বপূর্ণ। JSON (JavaScript Object Notation) এবং XML (Extensible Markup Language) উভয়ই ডেটা ট্রান্সফার ফরম্যাট হিসেবে ব্যাপকভাবে ব্যবহৃত হয়। ExtJS এই দুটি ফরম্যাটের সাথে ডেটা ইন্টারঅ্যাকশন করতে সহায়ক API প্রদান করে।
JSON ডেটা স্টোরের মাধ্যমে অ্যাপ্লিকেশনে ব্যবহৃত হয়। ExtJS এ JSON ডেটা হ্যান্ডলিং সাধারণত Ext.data.Store
এবং Ext.data.proxy.Ajax
এর মাধ্যমে করা হয়।
Ext.create('Ext.data.Store', {
storeId: 'userStore',
fields: ['id', 'name', 'email'],
proxy: {
type: 'ajax',
url: 'users.json', // JSON ফাইল বা API এন্ডপয়েন্ট থেকে ডেটা লোড
reader: {
type: 'json',
rootProperty: 'data' // JSON ডেটার মূল কন্টেন্ট
}
},
autoLoad: true // ডেটা স্বয়ংক্রিয়ভাবে লোড হবে
});
এখানে:
proxy
: ajax
টাইপের প্রক্সি ব্যবহার করা হয়েছে JSON ডেটা লোড করার জন্য।reader
: JSON ডেটা রিড করার জন্য json
রিডার ব্যবহার করা হয়েছে। rootProperty
নির্দেশ করে JSON ডেটার রুট এলিমেন্ট যা আসল ডেটা ধারণ করে (এই উদাহরণে 'data'
)।// ডেটা ফিল্টার করা
var store = Ext.getStore('userStore');
store.filter('name', 'John');
// একটি নির্দিষ্ট রেকর্ড পাওয়া
var record = store.getById(1); // id 1 এর রেকর্ড
console.log(record.get('name'));
এখানে, filter
এবং getById
মেথডগুলো ব্যবহার করে JSON ডেটাতে ফিল্টার এবং নির্দিষ্ট রেকর্ড অনুসন্ধান করা হয়েছে।
XML ডেটা হ্যান্ডলিংয়ের জন্যও ExtJS এর মধ্যে Ext.data.proxy.Ajax
এবং Ext.data.reader.Xml
ব্যবহার করা হয়। XML ডেটার স্ট্রাকচার সাধারণত আরও জটিল, তবে ExtJS সহজভাবে এটি রিড এবং ম্যানিপুলেট করতে সহায়ক।
Ext.create('Ext.data.Store', {
storeId: 'userStore',
fields: ['id', 'name', 'email'],
proxy: {
type: 'ajax',
url: 'users.xml', // XML ফাইল বা API এন্ডপয়েন্ট থেকে ডেটা লোড
reader: {
type: 'xml',
record: 'user', // XML ডেটার প্রতিটি রেকর্ডের জন্য ট্যাগ নাম
rootProperty: 'users' // মূল রুট এলিমেন্ট যেখানে ডেটা রয়েছে
}
},
autoLoad: true
});
এখানে:
proxy
: ajax
প্রক্সি ব্যবহার করে XML ডেটা লোড করা হচ্ছে।reader
: XML ডেটার জন্য xml
রিডার ব্যবহার করা হচ্ছে। এখানে record: 'user'
এর মাধ্যমে প্রতিটি রেকর্ডের জন্য XML ট্যাগের নাম নির্ধারণ করা হয়েছে এবং rootProperty: 'users'
দিয়ে রুট এলিমেন্টটি চিহ্নিত করা হয়েছে।var store = Ext.getStore('userStore');
// XML ডেটা ফিল্টার করা
store.filter('name', 'John');
// XML থেকে একটি নির্দিষ্ট রেকর্ড পাওয়া
var record = store.getAt(0); // প্রথম রেকর্ড
console.log(record.get('name'));
এখানে filter
এবং getAt
মেথড ব্যবহার করে XML ডেটাতে ফিল্টার এবং রেকর্ড খোঁজা হয়েছে।
Ext.Ajax.request({
url: 'users.json',
method: 'GET',
success: function(response) {
var jsonData = Ext.decode(response.responseText);
console.log(jsonData); // JSON ডেটা প্রাপ্তি
},
failure: function() {
console.log('Failed to load JSON data');
}
});
Ext.Ajax.request({
url: 'users.xml',
method: 'GET',
success: function(response) {
var xmlDoc = response.responseXML;
console.log(xmlDoc); // XML ডেটা প্রাপ্তি
},
failure: function() {
console.log('Failed to load XML data');
}
});
এখানে:
Ext.decode
ব্যবহার করে JSON ডেটাকে JavaScript অবজেক্টে পরিণত করা হয়েছে।response.responseXML
ব্যবহার করে XML ডেটা পাওয়া গেছে, যা পরবর্তী সময়ে DOM অপারেশনের মাধ্যমে ম্যানিপুলেট করা যাবে।Ext.data.proxy.Ajax
এবং Ext.data.reader.Json
ব্যবহার করে ডেটা লোড এবং ম্যানিপুলেট করা যায়।Ext.data.proxy.Ajax
এবং Ext.data.reader.Xml
ব্যবহার করে ডেটা লোড এবং ম্যানিপুলেট করা যায়।ExtJS তে JSON এবং XML ডেটা ব্যবহারের মাধ্যমে আপনি শক্তিশালী এবং স্কেলেবল ওয়েব অ্যাপ্লিকেশন তৈরি করতে পারেন যা ডেটা ইন্টারঅ্যাকশন এবং প্রক্রিয়া সহজ করে।
AJAX (Asynchronous JavaScript and XML) হল একটি প্রযুক্তি যা ক্লায়েন্ট (ব্রাউজার) এবং সার্ভারের মধ্যে অ্যাসিঙ্ক্রোনাসভাবে ডেটা বিনিময় করতে ব্যবহৃত হয়, যার মাধ্যমে পেজ রিফ্রেশ না করেই ডেটা লোড বা সাবমিট করা যায়। ExtJS AJAX রিকোয়েস্ট ব্যবস্থাপনা এবং এর সাথে সম্পর্কিত Error Handling সহজভাবে সম্পাদন করার জন্য শক্তিশালী ফিচার প্রদান করে।
এখানে আমরা AJAX Request Management এবং Error Handling এর মাধ্যমে কীভাবে সার্ভার থেকে ডেটা লোড করা, পোস্ট করা, এবং ত্রুটি পরিচালনা করা যায় তা শিখব।
Ext.Ajax.request হল ExtJS এর একটি মেথড যা সার্ভার সাইডের সাথে AJAX রিকোয়েস্ট পাঠানোর জন্য ব্যবহৃত হয়। এর মাধ্যমে GET, POST, PUT, DELETE ইত্যাদি HTTP মেথড ব্যবহার করে রিকোয়েস্ট করা যায় এবং সার্ভার থেকে প্রাপ্ত ডেটা অ্যাসিঙ্ক্রোনাসভাবে প্রক্রিয়া করা যায়।
Ext.Ajax.request({
url: 'your-endpoint-url', // সার্ভারের URL
method: 'GET', // HTTP মেথড (GET, POST, PUT, DELETE)
params: { // সার্ভারে পাঠানোর প্যারামিটার
key1: 'value1',
key2: 'value2'
},
success: function(response, opts) {
var obj = Ext.decode(response.responseText); // সার্ভারের রেসপন্স ডিকোড করা
console.log('Server response:', obj);
},
failure: function(response, opts) {
console.log('Request failed with status:', response.status);
}
});
url
: সার্ভারের URL যেখানে রিকোয়েস্ট পাঠানো হবে।method
: HTTP মেথড (GET, POST ইত্যাদি)।params
: সার্ভারে পাঠানো ডেটা (কী-ব্লুয়ালি)।success
: রিকোয়েস্ট সফল হলে কলব্যাক ফাংশন।failure
: রিকোয়েস্ট ব্যর্থ হলে কলব্যাক ফাংশন।Ext.Ajax.request({
url: 'https://example.com/api/saveData',
method: 'POST',
jsonData: {
name: 'John Doe',
email: 'john.doe@example.com'
},
success: function(response, opts) {
var obj = Ext.decode(response.responseText);
console.log('Data saved:', obj);
},
failure: function(response, opts) {
console.log('Failed to save data:', response.status);
}
});
jsonData
: POST রিকোয়েস্টের জন্য JSON ডেটা পাঠানোর জন্য ব্যবহার করা হয়।এখন, Error Handling এর মাধ্যমে আমরা সার্ভার থেকে প্রাপ্ত ত্রুটি (যেমন, 404 বা 500 স্ট্যাটাস কোড) হ্যান্ডল করতে পারব। ExtJS এর failure কনফিগারেশন ব্যবহার করে আমরা ত্রুটির সঠিক হ্যান্ডলিং করতে পারি।
Ext.Ajax.request({
url: 'https://example.com/api/getData',
method: 'GET',
success: function(response, opts) {
var obj = Ext.decode(response.responseText);
console.log('Data received:', obj);
},
failure: function(response, opts) {
// স্ট্যাটাস কোড চেক করা
if (response.status === 404) {
Ext.Msg.alert('Error', 'Resource not found');
} else if (response.status === 500) {
Ext.Msg.alert('Error', 'Internal server error');
} else {
Ext.Msg.alert('Error', 'Request failed with status: ' + response.status);
}
}
});
এখানে:
response.status
: সার্ভার থেকে প্রাপ্ত HTTP স্ট্যাটাস কোড।Ext.Msg.alert()
: ব্যবহারকারীকে ত্রুটি মেসেজ দেখানোর জন্য ExtJS এর একটি মেসেজ বক্স।Ext.Ajax.on
এক্সটিজেএস তে, Ext.Ajax.on
ব্যবহার করে গ্লোবালভাবে সার্ভারের রেসপন্স ত্রুটি হ্যান্ডলিং করা সম্ভব। এই পদ্ধতিটি সার্ভার থেকে ত্রুটির কোডের জন্য একটি সাধারণ হ্যান্ডলার প্রদান করে।
Ext.Ajax.on('requestexception', function(connection, response, options, eOpts) {
var status = response.status;
if (status === 500) {
Ext.Msg.alert('Server Error', 'There was an error processing your request.');
} else if (status === 404) {
Ext.Msg.alert('Not Found', 'The requested resource could not be found.');
}
});
এখানে:
requestexception
ইভেন্টটি সার্ভারের রিকোয়েস্টে ত্রুটি ঘটলে ট্রিগার হবে।সার্ভার রিকোয়েস্টের জন্য সময়সীমা (timeout) নির্ধারণ করা যেতে পারে। যদি সার্ভার একটি নির্দিষ্ট সময়ের মধ্যে রেসপন্স না করে, তবে timeout হ্যান্ডলার কার্যকর হবে।
Ext.Ajax.request({
url: 'https://example.com/api/slowRequest',
method: 'GET',
timeout: 5000, // 5 সেকেন্ড
success: function(response, opts) {
var obj = Ext.decode(response.responseText);
console.log('Response received:', obj);
},
failure: function(response, opts) {
if (response.status === 0) {
Ext.Msg.alert('Error', 'Request timed out');
} else {
Ext.Msg.alert('Error', 'Request failed with status: ' + response.status);
}
}
});
এখানে:
timeout
: এটি রিকোয়েস্টের জন্য একটি সময়সীমা নির্ধারণ করে (মিলিসেকেন্ডে)।response.status === 0
: যখন সময়সীমা শেষ হয়ে যায় এবং সার্ভার থেকে কোনো রেসপন্স আসে না তখন এটি ট্রিগার হয়।যখন সার্ভার থেকে JSON ডেটা পাঠানো হয়, তখন Ext.decode()
ব্যবহার করে রেসপন্স ডেটা ডিকোড করা হয় এবং তা সহজে ব্যবহারের জন্য প্রক্রিয়া করা হয়।
Ext.Ajax.request({
url: 'https://example.com/api/getData',
method: 'GET',
success: function(response, opts) {
try {
var obj = Ext.decode(response.responseText); // JSON রেসপন্স ডিকোড করা
console.log('Data received:', obj);
} catch (e) {
Ext.Msg.alert('Error', 'Invalid JSON response');
}
},
failure: function(response, opts) {
Ext.Msg.alert('Error', 'Request failed with status: ' + response.status);
}
});
এখানে:
Ext.decode()
: এটি JSON স্ট্রিং থেকে জাভাস্ক্রিপ্ট অবজেক্টে রূপান্তর করে।try-catch
: JSON ডেটা ডিকোড করার সময় কোনো ত্রুটি এলে তা হ্যান্ডেল করার জন্য ব্যবহার করা হয়।Ext.Ajax.request
মেথডের মাধ্যমে GET, POST, PUT, DELETE রিকোয়েস্ট পাঠানোর জন্য ব্যবহৃত হয়।Ext.decode()
ব্যবহার করে সেটি ডিকোড করা হয়।এই সব ফিচারগুলির মাধ্যমে আপনি ExtJS তে কার্যকরীভাবে AJAX রিকোয়েস্ট ম্যানেজ এবং সার্ভার সাইড ত্রুটি হ্যান্ডল করতে পারবেন, যা আপনার অ্যাপ্লিকেশনকে আরও শক্তিশালী এবং ইউজার-বান্ধব করে তোলে।
Read more