XMLHttpRequest
ایکس ایم ایل ایچ ٹی ٹی پی ریکوسٹ (ایکس ایچ آر) ایک جاوا اسکرپٹ کلاس ہے جس میں ویب براؤزر سے ویب سرور تک ایچ ٹی ٹی پی کی درخواستوں کو غیر مطابقت پذیر طریقے سے منتقل کرنے کے طریقے شامل ہیں۔ یہ طریقے براؤزر پر مبنی ایپلی کیشن کو عمدہ سرور کال کرنے اور نتائج کو ایکس ایم ایل ایچ ٹی ٹی پی ریکوسٹ کے رسپانس ٹیکسٹ ایٹریبیوٹ میں محفوظ کرنے کی اجازت دیتے ہیں۔ ایکس ایم ایل ایچ ٹی ٹی پی ریکوسٹ کلاس ایجیکس پروگرامنگ کا ایک جزو ہے۔ ایجیکس سے پہلے، ایک ایچ ٹی ایم ایل فارم کو مکمل طور پر سرور پر بھیجنے کے بعد ایک مکمل براؤزر پیج ریفریش کرنے کی ضرورت ہوتی تھی۔ XMLHttpRequest کلاس کے پیچھے کا تصور 2000 میں مائیکروسافٹ آؤٹ لک کے ڈویلپرز نے تصور کیا تھا-جو ونڈوز 2000 آپریٹنگ سسٹم پر دستیاب ہے۔ اس تصور کو پھر انٹرنیٹ ایکسپلورر 5 (2001) براؤزر کے مترجم کے اندر نافذ کیا گیا۔ تاہم، اصل نحو میں XMLHttpRequest شناخت کنندہ کا استعمال نہیں کیا گیا تھا۔ اس کے بجائے، ڈویلپرز نے شناخت کاروں ایکٹو ایکس آبجیکٹ ("Msxml2.XMLHTTP") اور ایکٹو ایکس آبجیکٹ ("Microsoft.XMLHTTP") کا استعمال کیا۔ انٹرنیٹ ایکسپلورر 7 (2006) کے مطابق، تمام براؤزر ایکس ایم ایل ایچ ٹی ٹی پی ریکوسٹ شناخت کنندہ کی حمایت کرتے ہیں۔ ایکس ایم ایل ایچ ٹی ٹی پی ریکویسٹ شناخت کنندہ اب تمام بڑے براؤزرز میں ڈی فیکٹو معیار ہے، بشمول موزیلا کا گیکو لے آؤٹ انجن (2002)، کونکیورر (2002)، سفاری 1.2 (2004)، اوپیرا 8.0 (2005)، اور آئی کیب (2005)۔ کراس براؤزر جاوا اسکرپٹ لائبریریوں جیسے جے کوری کی آمد کے ساتھ، ڈویلپرز بالواسطہ طور پر ایکس ایم ایل ایچ ٹی ٹی پی ریکوسٹ فنکشنلٹی کو استعمال کر سکتے ہیں۔ معیارات ورلڈ وائڈ ویب کنسورشیم (ڈبلیو 3 سی) نے 5 اپریل 2006 کو ایکس ایم ایل ایچ ٹی ٹی پی ریکویسٹ آبجیکٹ کے لیے ورکنگ ڈرافٹ کی تفصیلات شائع کیں۔ 25 فروری، 2008 کو، ڈبلیو 3 سی نے ورکنگ ڈرافٹ لیول 2 کی تفصیلات شائع کیں۔ ایونٹ کی پیشرفت کی نگرانی کرنے، کراس سائٹ کی درخواستوں کی اجازت دینے، اور بائٹ اسٹریمز کو سنبھالنے کے لیے لیول 2 میں اضافی طریقے شامل کیے گئے ہیں۔ 2011 کے آخر میں، سطح 2 کی تفصیلات کو اصل تفصیلات میں جذب کر لیا گیا۔ 2012 کے آخر میں، ڈبلیو ایچ اے ٹی ڈبلیو جی نے ترقی سنبھال لی اور ویب آئی ڈی ایل کا استعمال کرتے ہوئے ایک زندہ دستاویز کو برقرار رکھا۔ ایکس ایم ایل ایچ ٹی ٹی پی ریکوسٹ کا استعمال کنسٹرکٹر ویب سرور کو غیر متزلزل درخواست تیار کرنے کے لیے پہلے ایکس ایم ایل ایچ ٹی ٹی پی ریکوسٹ آبجیکٹ کو فوری (میموری مختص) کرنے کی ضرورت ہوتی ہے۔ مختص کردہ میموری متغیر کو تفویض کی جاتی ہے۔ ایک نئے آبجیکٹ کو فوری کرنے کے لیے جاوا اسکرپٹ میں پروگرامنگ بیان نیا ہے۔ نئے بیان کے بعد آبجیکٹ کا کنسٹرکٹر فنکشن آتا ہے۔ آبجیکٹ پر مبنی زبان کے ڈویلپرز کے لیے رواج یہ ہے کہ کلاس کے نام کے طور پر اسی نام کا استعمال کرتے ہوئے کنسٹرکٹر فنکشن کو مدعو کیا جائے۔ اس صورت میں، کلاس کا نام XMLHttpRequest ہے۔ ایک نئے XMLHttpRequest کو فوری کرنے اور اسے متغیر نامی درخواست پر تفویض کرنے کے لیے: ver درخواست = نیا XMLHttpRequest () ؛ کھلا طریقہ XMLHttpRequest کو تیار کرتا ہے۔ یہ پانچ پیرامیٹرز تک قبول کر سکتا ہے، لیکن صرف پہلے دو کی ضرورت ہوتی ہے۔ وار درخواست = نیا XMLHttpRequest () ؛ request.open (درخواست کا طریقہ، جمع کروائیں یو آر ایل، غیر متزلزل بولین، صارف نام، پاس ورڈ) ؛ درخواست کا طریقہ: ڈیٹا کی عام مقدار کے لیے HTTP درخواست کا طریقہ GET ہو سکتا ہے۔ دستیاب دیگر درخواست کے طریقوں میں، پوسٹ کافی مقدار میں ڈیٹا کو سنبھالے گا۔ ریٹرن سٹرنگ موصول ہونے کے بعد، XMLHttpRequest میموری کو آزاد کرنے کے لیے. open () پر DELETE درخواست کا طریقہ بھیجیں۔ اگر ڈیلیٹ بھیجا جاتا ہے، تو سبمیٹ یو آر ایل پیرامیٹر کالعدم ہو سکتا ہے۔ * request.open ("DELETE"، null) ؛ جمع کروائیں یو آر ایل: جمع کروائیں یو آر ایل ایک یو آر ایل ہے جس میں عمل فائل کا نام اور کوئی بھی پیرامیٹر ہوتے ہیں جو ویب سرور پر جمع کیے جاتے ہیں۔ اگر یو آر ایل میں میزبان کا نام ہے، تو یہ ویب سرور ہونا چاہیے جس نے ایچ ٹی ایم ایل دستاویز بھیجی ہو۔ ایجیکس ایک ہی اصل کی پالیسی کی حمایت کرتا ہے۔ اسنکرونس بولین: اگر فراہم کی جائے تو اسے ٹرو پر سیٹ کیا جانا چاہیے۔ اگر غلط پر سیٹ کیا جاتا ہے، تو براؤزر واپسی کی تار موصول ہونے تک انتظار کرے گا۔ پروگرامرز کو اسنکرونس بولین کو غلط پر سیٹ کرنے کی حوصلہ شکنی کی جاتی ہے، اور براؤزرز کو مستثنی غلطی کا سامنا کرنا پڑ سکتا ہے۔ صارف نام: اگر فراہم کیا جاتا ہے، تو یہ صارف کی تصدیق میں مدد کرے گا۔ پاس ورڈ: اگر فراہم کیا جاتا ہے، تو یہ صارف کی تصدیق میں مدد کرے گا۔ سیٹ ریکویسٹ ہیڈر طریقہ اگر پوسٹ کا درخواست کا طریقہ استعمال کیا جاتا ہے، تو میڈیا ٹائپ کے مواد کو بھیجنے کا اضافی مرحلہ: ایپلی کیشن/ایکس-ڈبلیو ڈبلیو ڈبلیو-فارم-ارلن کوڈ کی ضرورت ہے۔ سیٹ ریکویسٹ ہیڈر طریقہ پروگرام کو اس یا دوسرے ایچ ٹی ٹی پی ہیڈر کو ویب سرور پر بھیجنے کی اجازت دیتا ہے۔ اس کا استعمال سیٹ ریکویسٹ ہیڈر (ہیڈر فیلڈ، ہیڈر ویلیو) ہے۔ پوسٹ درخواست کے طریقہ کار کو فعال کرنے کے لیے: * request.setRequestHeader ("کنٹینٹ ٹائپ"، "ایپلی کیشن/x-www-فارم-ارلن کوڈڈ") ؛ بھیجنے کا طریقہ اگر پوسٹ کا درخواست کا طریقہ استعمال کیا جاتا ہے، تو ویب سرور فارم کے ڈیٹا کو معیاری ان پٹ اسٹریم سے پڑھنے کی توقع کرتا ہے۔ فارم ڈیٹا کو ویب سرور پر بھیجنے کے لیے، request.send (فارم ڈیٹا) کو انجام دیں، جہاں فارم ڈیٹا ایک ٹیکسٹ سٹرنگ ہے۔ اگر جی ای ٹی کا درخواست کا طریقہ استعمال کیا جاتا ہے، تو ویب سرور صرف ڈیفالٹ ہیڈر کی توقع کرتا ہے۔ ڈیفالٹ ہیڈر بھیجنے کے لیے، request.send (null) پر عمل کریں۔ آنریڈی اسٹیٹ چینج پر آنریڈی اسٹیٹ چینج ایونٹ سننے والا ایک کال بیک طریقہ ہے جو وقتا فوقتا ایجیکس لائف سائیکل میں انجام دیا جاتا ہے۔ ریڈی اسٹیٹ میتھڈ () نامی کال بیک طریقہ ترتیب دینے کے لیے، نحو request.onreadystatechange = ریڈی اسٹیٹ میتھڈ ہے۔ سہولت کے لیے، نحو ایک گمنام طریقہ کی وضاحت کرنے کی اجازت دیتا ہے۔ ایک گمنام کال بیک طریقہ کی وضاحت کرنے کے لیے: وار درخواست = نیا XMLHttpRequest () ؛ request.onreadystatechange = فنکشن () {// کوڈ خارج کر دیا گیا} XMLHttpRequest لائف سائیکل کئی مراحل سے گزرتا ہے-0 سے 4 تک۔ مرحلہ 0 اوپن () طریقہ استعمال کرنے سے پہلے ہوتا ہے، اور مرحلہ 4 تب ہوتا ہے جب ٹیکسٹ سٹرنگ پہنچ جاتی ہے۔ لائف سائیکل کی نگرانی کے لیے، ایکس ایم ایل ایچ ٹی ٹی پی ریکوسٹ کے پاس ریڈی اسٹیٹ ایٹریبیوٹ دستیاب ہے۔ مراحل 1-3 مبہم ہیں اور تشریحات براؤزر میں مختلف ہوتی ہیں۔ بہر حال، ایک تشریح یہ ہے: مرحلہ 0: غیر شروع شدہ مرحلہ 1: لوڈنگ مرحلہ 2: لوڈ شدہ مرحلہ 3: انٹرایکٹو مرحلہ 4: مکمل جب ریڈی اسٹیٹ 4 تک پہنچ جاتا ہے، تو ٹیکسٹ سٹرنگ آ جاتی ہے اور رسپانس ٹیکسٹ ایٹریبیوٹ میں سیٹ ہو جاتی ہے۔ ور درخواست = نیا XMLHttpRequest () ؛ request.onreadystatechange = فنکشن () {اگر (request.readyState = = 4) {// request.responseText سیٹ ہے} لینکس مثالیں درخواست پر، براؤزر ویب سرور کو کمپیوٹر پروگرام پر عمل درآمد کرنے کی درخواست منتقل کرنے کے لیے جاوا اسکرپٹ فنکشن پر عمل کرے گا۔ کمپیوٹر پروگرام پی ایچ پی مترجم، دوسرا مترجم، یا ایک مرتب شدہ قابل عمل ہو سکتا ہے۔ کسی بھی صورت میں، جاوا اسکرپٹ فنکشن ٹیکسٹ سٹرنگ کو واپس منتقل کرنے اور رسپانس ٹیکسٹ ایٹریبیوٹ میں محفوظ کرنے کی توقع کرتا ہے۔ جاوا اسکرپٹ فنکشن کی مثال بنانے کے لیے: سی ڈی/ور/ڈبلیو ڈبلیو/ایچ ٹی ایم ایل ajax_submit.js نامی فائل میں ترمیم کریں: فنکشن ajax _ submit (عنصر _ آئی ڈی، جمع کریں _ یو آر ایل) {ور درخواست = نیا ایکس ایم ایل ایچ ٹی ٹی پی ریکویسٹ () ؛ ور مکمل _ ریاست = 4 ؛ request.onreadystatechange = فنکشن () {اگر (request.readyState = = مکمل _ ریاست) {دستاویز۔ حاصل کریںElementById (عنصر _ آئی ڈی)۔ اندرونی ایچ ٹی ایم ایل = request.responseText ؛ request.open ("DELETE"، null) ؛}} request.open ("GET"، submit _ URL) ؛ request.send (null) ؛} پی ایچ پی کی مثال پی ایچ پی ایک اسکرپٹنگ زبان ہے جو خاص طور پر ایچ ٹی ایم ایل کے ساتھ انٹرفیس کے لیے ڈیزائن کی گئی ہے۔ کیونکہ پی ایچ پی انجن ایک مترجم ہے-پروگرام کے بیانات کی تشریح کرتے ہوئے جیسا کہ وہ پڑھے جاتے ہیں-پروگرامنگ کی حدود اور کارکردگی کے اخراجات ہوتے ہیں۔ بہر حال، اس کی سادگی فائلوں کے ایکس ایم ایل ایچ ٹی ٹی پی ریکوسٹ سیٹ کو ایک ہی کام کرنے والی ڈائرکٹری میں رکھ سکتی ہے-شاید/ور/ڈبلیو ڈبلیو/ایچ ٹی ایم ایل۔ پی ایچ پی سرور جزو پی ایچ پی ایکس ایم ایل ایچ ٹی ٹی پی ریکوسٹ کا سرور جزو سرور پر واقع ایک فائل ہے جو براؤزر میں منتقل نہیں ہوتی ہے۔ اس کے بجائے، پی ایچ پی مترجم اس فائل کو کھولے گا اور اس کی پی ایچ پی ہدایات کو پڑھے گا۔ ایکس ایم ایل ایچ ٹی ٹی پی ریکوسٹ پروٹوکول کے لیے اسے ٹیکسٹ سٹرنگ آؤٹ پٹ کرنے کی ضرورت ہوتی ہے۔ سی ڈی/ور/ڈبلیو ڈبلیو/ایچ ٹی ایم ایل ایک فائل میں ترمیم کریں جس کا نام ہے ajax.phtml: <? پی ایچ پی ایکو '<ایچ 1> ہیلو ورلڈ! </ایچ 1>' ؛؟> پی ایچ پی براؤزر جزو پی ایچ پی ایکس ایم ایل ایچ ٹی ٹی پی ریکوسٹ کا براؤزر جزو سرور پر واقع ایک فائل ہے جو براؤزر میں منتقل ہو جاتی ہے۔ براؤزر اس فائل کو کھولے گا اور اس کی ایچ ٹی ایم ایل ہدایات کو پڑھے گا۔ سی ڈی/ور/ویب سائٹ/ایچ ٹی ایم ایل ajax.html نامی فائل میں ترمیم کریں: <ایچ ٹی ایم ایل> <سر> ہیلو ورلڈ </عنوان> <اسکرپٹ ٹائپ = ٹیکسٹ/جاوا اسکرپٹ ایس آر سی = ajax_submit.js </سکرپٹ> </سر> <جسم> <ڈیوی آئی ڈی = اجیکس _ عنوان> </ڈیوی> <بٹن آن کلک = "اجیکس _ جمع کرو ('اجیکس _ عنوان'، 'ajax.phtml')"> جمع کرو </بٹن> </باڈی> اپنے براؤزر کو سی جی آئی مثال:// لوکل ہوسٹ/ajax.html پر دبائیں۔ کامن گیٹ وے انٹرفیس (سی جی آئی) عمل براؤزرز کو اجازت دیتا ہے سی جی آئی سرور جزو سی جی آئی ایکس ایم ایل ایچ ٹی ٹی پی ریکوسٹ کا سرور جزو سرور پر واقع ایک قابل عمل فائل ہے۔ آپریٹنگ سسٹم اس فائل کو کھولے گا اور اس کی مشین کی ہدایات کو پڑھے گا۔ ایکس ایم ایل ایچ ٹی ٹی پی ریکوسٹ پروٹوکول کو ٹیکسٹ سٹرنگ آؤٹ پٹ کرنے کے لیے قابل عمل کی ضرورت ہوتی ہے۔ مرتب شدہ پروگراموں میں دو فائلیں ہوتی ہیں: سورس کوڈ اور ایک متعلقہ قابل عمل۔ سی ڈی/یو ایس آر/لب/سی جی آئی-بن نامی فائل میں ترمیم کریں: ajax.c: #include <stdio.h> وایڈ مین (وایڈ) {/* سی جی آئی کو آؤٹ پٹ کرنے کے لیے پہلی لائن کی ضرورت ہوتی ہے: */پرنٹ ایف ("مواد کی قسم: متن/ایچ ٹی ایم ایل \n") ؛/* سی جی آئی کو آؤٹ پٹ کرنے کے لیے دوسری لائن کی ضرورت ہوتی ہے: */پرنٹ ایف ("\n") ؛ پرنٹ ایف ("<ایچ 1> ہیلو ورلڈ! </ایچ 1> \n") ؛} قابل عمل بنانے کے لیے سورس کوڈ مرتب کریں: سی سی ajax.c-او اجکس یا سوڈو سی سی ajax.c-او اجکس سی جی آئی براؤزر ویب سرور کو ایک قابل عمل کو انجام دینے کے لیے بتانے کے لیے نحو/cgi-bin/ہے جس کے بعد فائل کا نام ہے۔ سیکیورٹی کے لیے، پھانسی دینے والے کو کروٹ جیل میں رہنا چاہیے۔ اس صورت میں جیل ڈائرکٹری/usr/lib/cgi-bin/ہے۔ سی ڈی/ور/ڈبلیو ڈبلیو/ایچ ٹی ایم ایل ajax.html نامی فائل میں ترمیم کریں: <ایچ ٹی ایم ایل> <سر> ہیلو ورلڈ </ٹائٹل> <اسکرپٹ ٹائپ = ٹیکسٹ/جاوا اسکرپٹ ایس آر سی = ajax_submit.js </سکرپٹ> </سر> <جسم> <ڈیوی آئی ڈی = اجیکس _ ٹائٹل> </ڈیوی> <بٹن آن کلک کریں = "اجیکس _ سبمیٹ ('اجیکس _ ٹائٹل'، '/سی جی آئی-بن/اجیکس')"> جمع کرو </بٹن> </باڈی> اپنے براؤزر کو HTTP:// لوکل ہوسٹ/ajax.html پر اشارہ کریں مزید دیکھیں ویب ساکٹ نمائندہ ریاستی منتقلی (REST)