XML DOM - XMLHttpRequest অবজেক্ট

XMLHttpRequest অবজেক্ট

XMLHttpRequest অবজেক্টটি HTTP প্রোটোকলের পূর্ণ প্রবেশদ্বার প্রদান করে, POST এবং HEAD রিকোর্ড এবং সাধারণ GET রিকোর্ড করার সম্ভবতা থাকে। XMLHttpRequest ওয়েব সার্ভারের প্রতিক্রিয়াকে সিনক্রোনাস বা অসিনক্রোনাস ভাবে ফিরিয়ে দিতে পারে, এবং টেক্সট বা একটি DOM ডকুমেন্টের রূপে কনটেন্ট ফিরিয়ে দিতে পারে。

যদিও XMLHttpRequest নামকরা, এটি XML ডকুমেন্টের সঙ্গে সীমিত নয়: এটি যে কোনও ধরনের টেক্সট ডকুমেন্টকে গ্রহণ করতে পারে。

XMLHttpRequest অবজেক্টটি নামকরা AJAX একটি কীভুত্বপূর্ণ ওয়েব অ্যাপ্লিকেশন আর্কিটেকচারের একটি কার্যকারী ফিচার

ব্রাউজার সমর্থন

XMLHttpRequest সমস্ত আধুনিক ব্রাউজারদের দ্বারা ভালোভাবে সমর্থিত হয়েছে। একমাত্র ব্রাউজার নির্ভরতা XMLHttpRequest অবজেক্টের সৃষ্টির সঙ্গে সংযুক্ত। IE 5 এবং IE 6-এ, IE-এর বিশেষ এক্টিভক্সওবজেক্ট () কন্সট্রাকটর ব্যবহার করতে হয়। যেমন আমরা XMLHttpRequest অবজেক্ট এই ধাপটি প্রস্তুত করা হয়েছে।

W3C মানকীকরণ

XMLHttpRequest অবজেক্টটি মানকীকৃত নয়, কিন্তু W3C মানকীকরণের কাজ শুরু করেছে, এই হান্ডবুকের প্রস্তুতির অন্তর্ভুক্ত অন্তর্ভুক্ত কিছুই মানকীকরণের কাজগুলির উপর ভিত্তি করে তৈরি করা হয়েছে。

বর্তমান XMLHttpRequest কার্যকর করণটি অত্যন্ত সমতুল্য। কিন্তু মানক থেকে সূক্ষ্মভাবে ভিন্ন। উদাহরণস্বরূপ, একটি কার্যকর পদ্ধতি null ফিরিয়ে দিতে পারে, মানক অনুসারে খালি স্ট্রিং ফিরিয়ে দিতে হবে, বা কার্যকর পদ্ধতি readyState 3 হিসেবে সংযোজিত করতে পারে যদিও সমস্ত প্রতিক্রিয়ার হেডারগুলির উপলব্ধি না হয়েছে。

বৈশিষ্ট্য

readyState

HTTP রিকোয়েস্টের অবস্থা।যখন XMLHttpRequest প্রথমবার তৈরি হয়, এই বৈশিষ্ট্যের মান 0 থেকে শুরু করে, একটি পূর্ণ HTTP প্রতিক্রিয়া প্রাপ্ত হওয়া পর্যন্ত এই মান 4-এ বৃদ্ধি করা হয়。

5টি অবস্থার প্রত্যেকটিতেই একটি সংযুক্ত অনুষ্ঠানিক নাম থাকে, নিচের তালিকায় অবস্থা, নাম এবং অর্থ দেওয়া হয়:

অবস্থা নাম বর্ণনা
0 Uninitialized প্রথম পর্যায়ের অবস্থা।XMLHttpRequest অবজেক্টটি তৈরি করা হয়েছে বা abort() মথড দ্বারা পুনরুদ্ধার করা হয়েছে。
1 Open open() মথড করা হয়েছে, কিন্তু send() মথড করা হয়নি। রিকোয়েস্টটি পাঠানো হয়নি。
2 Sent Send() মথড করা হয়েছে, HTTP রিকোয়েস্টটি ওয়েব সার্ভারে পাঠানো হয়েছে। প্রতিক্রিয়া প্রাপ্ত হয়নি。
3 Receiving সমস্ত প্রতিক্রিয়া হেডারগুলি প্রাপ্ত হয়েছে। প্রতিযোগী বস্তুর প্রাপ্তি শুরু করা হয়েছে কিন্তু এখনও সম্পূর্ণ হয়নি。
4 Loaded HTTP প্রতিক্রিয়াটি সম্পূর্ণভাবে প্রাপ্ত হয়েছে。

readyState-এর মান হ্রাস হবে না, যদি একটি রিকোয়েস্ট প্রক্রিয়ায় থাকা অবস্থায় abort() বা open() মথড করা হয়। এই বৈশিষ্ট্যের মান বৃদ্ধি পড়লে, onreadystatechange ইভেন্ট হ্যান্ডলারটি ট্রিগার করবে。

responseText

এখনও সার্ভারের কাছে প্রাপ্ত হওয়া প্রতিক্রিয়ার বস্তু (হেডার ছাড়া), কিংবা যদি এখনও ডাটা প্রাপ্ত হয়নি, তবে একটি খালি স্ট্রিং।

যদি readyState 3-র নিচে থাকে, এই বৈশিষ্ট্যটি একটি খালি স্ট্রিং হবে। যখন readyState 3, এই বৈশিষ্ট্যটি প্রাপ্ত হওয়া প্রতিক্রিয়ার অংশকে ফিরিয়ে দেবে। যখন readyState 4, এই বৈশিষ্ট্যটি পূর্ণ প্রতিক্রিয়ার বস্তুকে সংরক্ষণ করবে。

যদি প্রতিক্রিয়ায় প্রতিযোগী বস্তুর চার্জিংয়ের কোডিংয়ের হেডার থাকে, তবে এই কোডিংয়ের ব্যবহার করা হবে। না তবে, Unicode UTF-8 হিসেবে মনে করা হবে。

responseXML

রিকোয়েস্টের প্রতিক্রিয়া, XML হিসেবে পার্স করা এবং ডকুমেন্ট অবজেক্টreturn.

ফিরিয়ে দেয়

status দ্বারা সার্ভার ফিরিয়ে দেওয়াHTTP স্টেটাস কোড

এবং 404-এর ক্ষেত্রে "Not Found" ত্রুটি, readyState 3-র নীচে এই প্রতিভাটি পড়ার সময় একটি অস্ত্রোত্তর ফ্ল্যাগ ফিরিয়ে দেয়

statusText

এই প্রতিভা, নামের দ্বারা রিকোর্ডের HTTP স্টেটাস কোডকে নির্দিষ্ট করে, যেমন, স্টেটাস 200-এর ক্ষেত্রে "OK" এবং 404-এর ক্ষেত্রে "Not Found"

ইভেন্ট হ্যান্ডলার

প্রত্যেকবার readyState অবজেক্টটির বদলানো হলে কলম ফাংশন, onreadystatechange

মথদা

abort()

রিসপন্সকে বাতিল করা, কানেকশনকে বন্ধ করা এবং সমস্ত অপ্রত্যাশিত নেটওয়ার্ক গতিকে সমাপ্ত করা

এই মথদা XMLHttpRequest অবজেক্টকে readyState 0-র অবস্থায় পুনরায় সংস্থান করে, এবং সমস্ত অপ্রত্যাশিত নেটওয়ার্ক গতিকে বাতিল করে, যেমন, যদি রিকোর্ড খুব দীর্ঘস্থায়ী হয় এবং রিসপন্স আর প্রয়োজন না, তবে এই মথদা ফিরিয়ে দেওয়া হয়

getAllResponseHeaders()

HTTP রিসপন্স হেডারকে অপার্শ্বীয় স্ট্রিং হিসাবে ফিরিয়ে দেয়

readyState 3-র নীচে, এই মথদা null ফিরিয়ে দেয়, না তবে, এই মথদা সার্ভার দ্বারা পাঠানো সমস্ত HTTP রিসপন্স হেডারকে ফিরিয়ে দেয়, হেডারকে একটি একক স্ট্রিং হিসাবে ফিরিয়ে দেয়, প্রত্যেক হেডার একটি লাইনে, প্রত্যেক লাইনকে "\r\n" দ্বারা বিভক্ত করা

getResponseHeader()

নির্দিষ্ট HTTP রিসপন্স হেডার এর মান ফিরিয়ে দেয়, পারামিট, ফিরিয়ে দেওয়া হয়নি রিসপন্স হেডার এর নাম

এই মথদা পরিণাম, নির্দিষ্ট HTTP রিসপন্স হেডার এর মান, এই হেডারটি পাওয়া হয়নি কিংবা readyState 3-র নীচে তুলনামূলক, একটি ক্ষণীয় স্ট্রিং

open()

HTTP রিকোর্ড পারামিট প্রথম উদাহরণ, URL এবং HTTP মথদা, কিন্তু রিকোর্ড পাঠানো হয়নি

send()

একটি HTTP রিকোর্ড পাঠানো, open() মথদা পাঠানো পারামিট এবং এই মথদা পাঠানো হয়নি রিকোর্ড

setRequestHeader()

একটি খুলা কিন্তু পাঠানো হয়নি রিকোর্ডের একটি HTTP রিকোর্ড সেট করা কিংবা যোগ করা

XMLHttpRequest.open()

এইচটিপিও প্রতিক্রিয়া পারামিটারকে প্রস্তুত করা

সংজ্ঞা

open(method, url, async, username, password)

method পারামিটারটি প্রতিক্রিয়ার জন্য ব্যবহৃত এইচটিপিও পদ্ধতি।মানগুলি হল GET, POST এবং HEAD。

url পারামিটারটি প্রতিক্রিয়ার প্রধান।অধিকাংশ ব্রাউজারগুলি একটি সমস্তসমূহ সুরক্ষা পদ্ধতি রাখে, এবং এইচটিপিও URL-কে স্ক্রিপ্টটির সঙ্গে একই হোস্টকে এবং পোর্টকে চাইতে হবে。

async পারামিটারটি প্রতিক্রিয়াটিকে অসময়কালীনভাবে প্রচলিত হতে ইঙ্গিত করে।যদি এই পারামিটারটি false, তবে প্রতিক্রিয়া সময়কালীন হবে, send() পদ্ধতিকে বানানো হলে পরবর্তী কোনও পদ্ধতিটি অপরিহার্যভাবে বিভ্রান্ত হবে, পরবর্তী প্রতিক্রিয়াটি সম্পূর্ণভাবে গ্রহণ করা হবে।যদি এই পারামিটারটি true হয় বা ছাড়া রাখা হয়, তবে প্রতিক্রিয়া অসময়কালীন, এবং সাধারণত onreadystatechange ইভেন্ট হ্যান্ডলারকে চাইতে হবে。

username এবং password পারামিটারগুলি অপশনাল, এইচটিপিও url-তে প্রয়োজনীয় অথেন্টিকেশনের জন্য প্রমাণপত্র প্রদান করে।যদি নির্দিষ্ট করা হয়, তাহলে এটি url-তে নির্দিষ্ট কোনও অথেন্টিকেশনকে সুধারের জন্য অপসারণ করে।

ব্যাখ্যা

এই পদ্ধতিটি send() পদ্ধতিকে কথ্যসূচক করার জন্য প্রতিক্রিয়া পারামিটারকে প্রস্তুত করে।এটি readyState-কে 1 করে, পূর্বে নির্দিষ্ট সমস্ত প্রতিক্রিয়া শীর্ষককে মুছে দিয়ে, এবং পূর্বে গ্রহণকৃত সমস্ত প্রতিক্রিয়া শীর্ষককে মুছে দিয়ে, এবং responseText, responseXML, status এবং statusText পারামিটারকে তাদের ডিফল্ট মান করে নেয়।যখন readyState 0 (যখন XMLHttpRequest অবজেক্ট সৃষ্টি হয় বা abort() পদ্ধতিটি বানানো হয়) এবং readyState 4 (প্রতিক্রিয়া গ্রহণ হওয়ার পর) হলে, এই পদ্ধতিটি বানানো হয়, যখন অন্য কোনও অবস্থাতে বানানো হয়, open() পদ্ধতিটির আচরণ নির্দিষ্ট করা হয়

সেন্ড() পদ্ধতিতে ব্যবহারের জন্য প্রতিক্রিয়া পারামিটারকে সংরক্ষণ করার পাশাপাশি, XMLHttpRequest অবজেক্টকে পুনর্ব্যবহারের জন্য পুনরুদ্ধার করার জন্য open() পদ্ধতিটি কোনও অন্য প্রবণতা নেই।বিশেষ করে, যখন এই পদ্ধতিটি বানানো হয়, সাধারণত একটি ওয়েব সার্ভারের সাথে নেটওয়ার্ক সংযোগ খোলা হয় না。

XMLHttpRequest.send()

একটি এইচটিপিও প্রতিক্রিয়া পাঠানো

সংজ্ঞা

send(body)

যদি open() পদ্ধতিতে নির্দিষ্ট এইচটিপিও পদ্ধতি POST বা PUT হয়, body পারামিটারটি প্রতিক্রিয়াটিকে নির্দিষ্ট করে, এটি একটি স্ট্রিং হিসাবে অথবা ডকুমেন্ট অবজেক্টযদি প্রতিক্রিয়াটি অনুপযুক্ত হলে, এই পারামিটারটি null হবে।অন্য কোনও পদ্ধতিতে, এই পারামিটারটি ব্যবহারযোগ্য নয়, এটি null হতে হবে (কিছু কার্যকরীতা এই পারামিটারটি ছাড়ার অনুমতি দেয়)।

ব্যাখ্যা

এই মথুদা একটি HTTP রিকোর্ড প্রেরণ করে।যদি open() ক্ষেত্রের পূর্বে কোনও কাজ করা হয়নি, বা আরও বিস্তারিতভাবে, readyState 1-এর না থাকাকালীন, send() একটি অসুবিধা ফেলে।অন্যথায়, এটি একটি HTTP রিকোর্ড প্রেরণ করে, যা নিম্নলিখিত অংশগুলি নিয়ে গঠিত:

  • open() ক্ষেত্রের পূর্বে নির্দিষ্ট করা HTTP পদ্ধতি, URL এবং প্রমাণপত্র (যদি থাকে)。
  • setRequestHeader() ক্ষেত্রের পূর্বে নির্দিষ্ট করা রিকোর্ড হেডার (যদি থাকে)।
  • এই মথুদা পারামিটারকে body পারামিটার

যখন রিকোর্ড প্রকাশ করা হয়, send() রিকোর্ডটির readyState-কে 2-এ নির্দিষ্ট করে এবং onreadystatechange ইভেন্ট হ্যান্ডলারকে ট্রিগার করে。

যদি আগের call করা open() পারামিটার async false-এর জন্য, এই মথুদা ব্লকিং হবে এবং ফলাফল না দেবে, পর্যন্ত তা তৈরি হয় না এবং সার্ভারের প্রতিক্রিয়া সম্পূর্ণভাবে গ্রহণ করা হয়।অন্যথায়, যদি async পারামিটার true-এর জন্য, বা এই পারামিটারটি সংক্ষেপিত হয়, send() তাৎক্ষণিকভাবে ফলাফল দেবে, এবং পরবর্তীতে সম্পর্কিত ভাবে, সার্ভারের প্রতিক্রিয়াটি পিন্নবদ্ধ থ্রেডটিতে প্রক্রিয়াকরণ করা হবে。

যদি সার্ভারের প্রতিক্রিয়াতে HTTP পুনর্নির্দিষ্টকরণ থাকে, send() মথুদা বা পিন্নবদ্ধ থ্রেডটি পুনর্নির্দিষ্টকরণকে স্বীকার করে।যখন সমস্ত HTTP প্রতিক্রিয়া হেডারগুলি গ্রহণ করা হয়, send() বা পিন্নবদ্ধ থ্রেডটি readyState-কে 3-এ নির্দিষ্ট করে এবং onreadystatechange ইভেন্ট হ্যান্ডলারকে ট্রিগার করে।যদি প্রতিক্রিয়া দীর্ঘ হয়, send() বা পিন্নবদ্ধ থ্রেডটি readyState-কে 3-এ থাকাকালীন onreadystatechange ইভেন্ট হ্যান্ডলারকে ট্রিগার করতে পারে: এটি একটি ডাউনলোড প্রগতি ইনডিকেটর হিসাবে কাজ করতে পারে।শেষত, যখন প্রতিক্রিয়া সম্পূর্ণ হয়, send() বা পিন্নবদ্ধ থ্রেডটি readyState-কে 4-এ নির্দিষ্ট করে এবং শেষবার ইভেন্ট হ্যান্ডলারকে ট্রিগার করে。

XMLHttpRequest.setRequestHeader()

সংজ্ঞা

setRequestHeader(name, value)

name পারামিটারটি হল নির্দিষ্ট করতে হলে হেডারের নাম।এই পারামিটারটির মধ্যে কোনও স্পেস, ডকুয়ালন বা নিবেদন থাকা উচিত না。

value পারামিটারটি হেডারের মান।এই পারামিটারটির মধ্যে একটি নিবেদন থাকা উচিত না。

ব্যাখ্যা

setRequestHeader() মথুদা একটি HTTP রিকোর্ডের হেডার নির্দিষ্ট করে, যা পরবর্তী send() ক্ষেত্রে প্রকাশিত রিকোর্ডে থাকা উচিত।এই মথুদা শুধুমাত্র readyState 1-এর সময় ক্রিয়াকরণ করা যেতে পারে, যেমন, open() ক্ষেত্রের পর, send() ক্ষেত্রের পূর্বে。

যদি নির্দিষ্ট নামের হেডার ইতিমধ্যেই নির্দিষ্ট হয়েছে, তবে এই হেডারের নতুন মানটি হবে: আগের নির্দিষ্ট মান, কমা, সবার মধ্যে স্পেস এবং এই ক্ষেত্রে নির্দিষ্ট মান。

যদি open() কল অভিভাবকত্ব নির্দিষ্ট করা হয়, XMLHttpRequest একটি উপযুক্ত Authorization রিকোর্ড হেডার স্বয়ংক্রিয়ভাবে পাঠাবে।কিন্তু, আপনি setRequestHeader() এই হেডার যোগ করতে পারেন।একইভাবে, যদি Web সার্ভার ওপেন() কলের URL-এর সাথে সংযুক্ত কোকি সংরক্ষিত করেছে, উপযুক্ত Cookie বা Cookie2 হেডারও স্বয়ংক্রিয়ভাবে প্রতিবেদনের মধ্যে যুক্ত হবে।এই কোকিগুলি হেডারে যোগ করতে setRequestHeader() কল করা যেতে পারে।XMLHttpRequest আবার User-Agent হেডারের জন্য একটি ডিফল্ট মান প্রদান করতেও পারে।যদি এটি এমনকি করে, এই হেডারের জন্য আপনি নির্দিষ্ট করা যে কোনও মানটি এই ডিফল্ট মানের পরে যুক্ত হবে।

কিছু রিকোর্ড হেডার XMLHttpRequest দ্বারা স্বয়ংক্রিয়ভাবে সেট করা হয়, না এই মথোদ্দত দ্বারা, HTTP প্রোটোকলের সাথে মানোন্নয়ন করার জন্য।এটি প্রতিনিধিত্ব করে এমন হেডারগুলির মধ্যে রয়েছে:

  • Host
  • Connection
  • Keep-Alive
  • Accept-charset
  • Accept-Encoding
  • If-Modified-Since
  • If-None-Match
  • If-Range
  • Range