jQuery ajax - ajax() طریق
مثال
AJAX سے ایک لفظ لوڈ کریں:
jQuery 代码:
$(document).ready(function(){ $("#b01").click(function(){ htmlobj=$.ajax({url:"/jquery/test1.txt",async:false}); $("#myDiv").html(htmlobj.responseText); }); });
HTML 代码:
Let AJAX change this text
定义和用法
ajax() 方法通过 HTTP 请求加载远程数据。
该方法是 jQuery 底层 AJAX 实现。简单易用的高层实现见 $.get, $.post 等。$.ajax() 返回其创建的 XMLHttpRequest 对象。大多数情况下你无需直接操作该函数,除非你需要操作不常用的选项,以获得更多的灵活性。
最简单的情况下,$.ajax() 可以不带任何参数直接使用。
توجہ:所有的选项都可以通过 $.ajaxSetup() 函数来全局设置。
语法
jQuery.ajax([settings])
参数 | 描述 |
---|---|
settings |
可选。用于配置 Ajax 请求的键值对集合。 可以通过 $.ajaxSetup() 设置任何选项的默认值。 |
参数
- options
-
نوع: آئی ویو
可选。AJAX 请求设置。所有选项都是可选的。
- async
-
نوع: بولین
مقادیر پیشفرض: true۔مقادیر پیشفرض کی تنظیم میں، تمام درخواستوں کی صورت میں آسین درخواست ہوتی ہیں۔ اگر آپ سینک درخواست ارسال کرنا چاہتے ہیں تو اس ترتیب کو false مقادیر مقرر کرسکتا ہیں۔
توجہ دے کہ، سینک درخواست نکالنا براؤزر کو قفل کردار دے گا، بقیہ کاربر کی دیگر آپریشنوں کو ارسال درخواست کی تکمیل تک انتظار کرسکتا ہے۔
- beforeSend(XHR)
-
نوع: فونکشن
درخواست ارسال کرنے سے پہلے XMLHttpRequest کا ایک فونکشن جو XMLHttpRequest کا ایک منفرد پارامتر ہے، جیسے خودساز HTTP سرسرے شامل کرنا میں ترمیم کرسکتا ہے۔
XMLHttpRequest کا ایک منفرد پارامتر ہے۔
یہ ایک Ajax واقعیہ ہے۔ اگر false بر آمد کرتا ہے تو اس بار کی Ajax درخواست کو منسوخ کردار دے گا۔
- cache
-
نوع: بولین
مقادیر پیشفرض: true،dataType کے لئے script اور jsonp کی صورت میں پیشفرض false ہوتا ہے۔false کا مقادیر مقرر کرنا اس صفح کو ناخابار کردار دے گا۔
jQuery 1.2 کی نئی کارکرد.
- کمپلیٹ(ایکسچرجی آر ایل، ٹائم است)
-
نوع: فونکشن
درخواست کی تکمیل کے بعد ریٹرن فونکشن (درخواست کامیاب یا ناموفق کی جانب سے بھی طلب کیا جائے گا).
پارامتر: ایک ایکسچارجی آر ایل کی جانب سے ویکل اور درخواست کی نوعیت کا وصف کرنے والی ایک فونکشن.
یہ ایک ایج کا ایک ایک حادثہ ہے
- contentType
-
نوع: سٹرنگ
مقصد: "application/x-www-form-urlencoded". اطلاعات کو سرور کی جانب بھیجتے وقت کانٹینٹ کا کد.
مقصد: بیشتر معاملات کے لیے مناسب ہوتا ہے. اگر آپ نے واضح طور پر ایک content-type کو $.ajax() کی جانب سے فراہم کیا تو وہ ضرور سرور کو بھیج دیا جائے گا (حتی اگر کوئی اطلاعات بھیج نہیں کیا جائے گا).
- context
-
نوع: آئی ویو
یہ آئی ویو ایکجگھر بناکر Ajax سے متعلق ریٹرن فونکشن کا سیٹ اپ کرنا ہوتا ہے. یعنی کہ فونکشن کی جانب سے this کا پیمانہ اس آئی ویو پر رکھا جائے گا (اگر اس پارامتر کو طے نہ کیا جائے تو this کا پیمانہ آجکس اکسیز کی جانب سے طے کیا جائے گا). مثلاً اگر ایک ڈومین آئی ویو کو پارامتر کے طور پر طے کیا جائے تو اس طرح سے سکسیس ریٹرن فونکشن کا سیٹ اپ کیا جائے گا.
ایسا ہی:
$.ajax({ url: "test.html", context: document.body, success: function(){ $(this).addClass("done"); }});
- data
-
نوع: سٹرنگ
سرور کو بھیجی جانے والی اطلاعات. خودکار طور پر درخواست کی شکل میں تبدیل ہوجائے گی. جی ایچ ای پی درخواست میں URL کے بعد شامل ہوجائے گا. processData اختیار کی وضاحت دیکھیے تاکہ اس خودکار تبدیلی کو روک دیئے جائیں. لازمی طور پر کلائز کی شکل میں ہونا چاہئے. اگر آرائی اکائی ہو تو جی کوئی خودکار طور پر مختلف اقدار کے لیے ایک ہی نام بنایا جائے گا. مثلاً {foo:["bar1", "bar2"]} تبدیل ہوجائے گا '&foo=bar1&foo=bar2'.
- dataFilter
-
نوع: فونکشن
Ajax کی بازگشتی اصل اطلاع کو پیش پروسیس کرنے والی فونکشن. دو پارامتر فراہم کرتا ہے: data یعنی Ajax کی بازگشتی اصل اطلاعات اور type یعنی جی کوئی کی جانب سے آجکس اکسیز کی جانب سے فراہم کی جانے والی dataType پارامتر. فونکشن کی جانب سے بازگشتی کی جانب سے جی کوئی مزید پروسیس کرے گا.
- dataType
-
نوع: سٹرنگ
ترجیحی کہ سرور کی جانب سے بازگشتی داده کا نوعیت کیا ہو. اگر نامعلوم رکھا جائے تو جی کوئی بیکساوت طور پر خودکار طور پر ایم اے سی پیکس میں ایم آئی سی اطلاع کی بنیاد پر پہچان کرے گا، مثلاً ایم آئی سی نوعیت XML کو XML کے طور پر پہچان دیا جائے گا. 1.4 میں جیسون کو ایک جاوا اسکریپٹ آئی ویو بنایا جائے گا، جبکہ اسکریپٹ کو چلایا جائے گا. بعد میں سرور کی جانب سے بازگشتی داده کا اطلاع اس کی بنیاد پر پارسی کیا جائے گا اور اس کا آغاز کار فراہم کرنے والی فونکشن کو دیا جائے گا. قابل استعمال اقدار:
- "xml": XML دستاویز واپس لائیں، جو جیواین کے ذریعے بندوبست کیا جاسکتا ہےً۔
- "html": خالص تیکست HTML معلومات واپس لائیں؛شامل script تیگوں کو dom میں داخل کیاجائے کے وقت چلایا جائے گاً۔
- "script": خالص تیکست جاوااسکریپٹ واپس لائیں۔نتیجہ کا کچلائی نہ ہوگا، مگر "cache" پارامتر کو سیٹ نہیں کیا جاتا ہےً۔توجہ: باہر کے درخواستوں کی وجہ سے (ایک دوسرے کے ساتھ اسی ڈومین میں نہیں)، تمام POST درخواستوں کو GET درخواستوں میں تبدیل کیا جائے گا (چون DOM کا script تیگ استعمال کیا جائے گا)ً۔
- "json": JSON اعدادوشمار واپس لائیں
- "jsonp": JSONP فرمت کا استعمال کریں۔جب "myurl?callback=?" جیسے فرمت کا استعمال کیا جاتا ہے، جیواین اتوماتیک طور پر ? کو صحیح فنکشن کا نام سے بدل دے گا، تاکہ ریٹرن فنکشن کو چلایا جاسکےً۔
- "text": خالص تیکست سٹرنگ واپس لائیں
- error
-
نوع: فونکشن
دفعہ طبیعی: خودکار طور پر پتہ چلایا جائے (xml یا html)۔ درخواست کی شکست کی وجہ سے اس فنکشن کو بلا کریںً۔
اس میں تین پارامتر ہیں: XMLHttpRequest کا آئیٹی، غلطی کی معلومات، (اختیاری) کچلائی جانے والی استثنائی کا آئیٹیً۔
اگر کسی غلطی کا واقع ہوا ہو، غلطی کی معلومات (دوسری پارامتر) null کے علاوہ، "timeout", "error", "notmodified" اور "parsererror" کا بھی ممکن ہوگاً۔
یہ ایک ایج کا ایک ایک حادثہ ہے
- global
-
نوع: بولین
آیا آجکس ایونٹ کا سبق شروع ہوگا یا نہیں؟ دفعہ طبیعی: true۔false کا استعمال کریں تاکہ آجکس ایونٹ کا سبق شروع نہ ہو، مثلاً ajaxStart یا ajaxStop کا استعمال کریں تاکہ مختلف آجکس ایونٹوں کا کنٹرول کیا جاسکےً۔
- ifModified
-
نوع: بولین
صرف کسی وقت کی وجہ سے سروسرو کے اعدادوشمار کی تبدیلی ہوئی ہوئی کے بعد نئی اعدادوشمار حاصل کریں۔ دفعہ طبیعی: false۔HTTP پیکٹ لاست-مدیفائی کا سرچ کریں تاکہ اس کا پتہ چلایا جاسکے کہ اعدادوشمار کسی طرح سے تبدیل نہیں ہوئی ہیں۔جیواین 1.4 میں، یہ سروسرو کا 'etag' بھی چکا رہا ہوگا تاکہ اس کا پتہ چلایا جاسکے کہ اعدادوشمار کسی طرح سے تبدیل نہیں ہوئی ہیںً۔
- jsonp
-
نوع: سٹرنگ
ایک jsonp درخواست میں ریٹرن فنکشن کا نام دوبارہ لکھناً۔ اس کا استعمال "callback=?" جیسے GET یا POST درخواستوں میں URL پارامتر میں "callback" کی جگہ کے لئے کیا جاتا ہے، مثلاً {jsonp:'onJsonPLoad'} سروسرو کے لئے "onJsonPLoad=?" بھیج سکتا ہےً۔
- jsonpCallback
-
نوع: سٹرنگ
جپنگ درخواست کے لیے ایک ری سپانسی فونکشن نام مقرر کریں، یہ مقصد جی کوئی کا خودکار طور پر پیدا کردہ کچھ نام کو بدلنا ہوتا ہے، یہ کچھ کی طرح کا جی کوئی کا منفرد نام پیدا کردیگا، جو کہ یہ درخواست کا بندوبست سے آسانی سے بندوبست کردیگا، یہ کچھ کی طرح کا ری سپانسی فونکشن اور غلطی کا بندوبست بندوبست کردیگا، آپ کا جی کوئی کا درخواست کو کچھ کی طرح کا گارا کیا جائے گا، آپ کا جی کوئی کا درخواست کو کچھ کی طرح کا گارا کیا جائے گا
- password
-
نوع: سٹرنگ
یہ کہا ہوا ہے کہ HTTP اصولی تحقیق کی ڈیلیگیشن کے لیے استعمال کیا جاتا ہے
- processData
-
نوع: بولین
مقصد: صحیح طور پر بولین، مقصدی طور پر صحیح، جی کوئی کا استعمال آپ کا data کا آپریشن کو تبدیل کردیگا، اگر آپ کا data ایک آپریشن ہے تو اس کو تبدیل کردیگا، اگر آپ کا data کا استعمال نہیں کریں تو اس کو صحیح طور پر تبدیل کردیگا، اگر آپ کا data آپریشن یا دیگر کچھ نا استعمال شدہ معلومات کو فراہم کردیگا تو اس کو صحیح طور پر تبدیل کردیگا
- scriptCharset
-
نوع: سٹرنگ
فقط جب dataType کا مقصد "جپنگ" یا "اسکریپت" اور type "GET" کا ہو تو اس کو طاقتور طور پر تبدیل کیا جائے گا، معمولاً محلی اور دور کی محتوائی کد کی اختلافی صورت میں استعمال کیا جاتا ہے
- success
-
نوع: فونکشن
درخواست کی کامیابی کے بعد کی ری سپانسی فونکشن
پارامتر: سرور سے واپس آنے والی اعدادو شمار، جو کہ dataType پارامتر کے ذریعے پردازش کئے گئے ہیں، اور حالت کا توصیفی الفاظ
یہ ایک ایج کا ایک ایک حادثہ ہے
- traditional
-
نوع: بولین
اگر آپ کا مقصد یہ ہے کہ آپ کا یہ اعدادو شمار تربیتی طریقے سے سیریلائزیشن کریں تو اس کو صحیح بنائیں، لطفاً جی کوئی پیار کریجئے، جی کوئی پیمانو میں کیئر کریجئے
- timeout
-
نوع: نمبر
درخواست کی تاخیر کو سینٹی میٹرز میں قائم کریں (مقصد: تاخیر کو میٹرز میں پورا کریں) اس سیٹاپ کا استعمال عالمی سیٹاپ کو محو کردیگا
- type
-
نوع: سٹرنگ
مقصد: "GET" (بجائے اس کا "POST" یا "GET")، مقصدی طریقہ کار "GET" کا ہوتا ہے۔تذکرہ: دیگر HTTP درخواست کئی، جیسا کہ PUT اور DELETE بھی استعمال کئے جاسکتے ہیں، لیکن یہ کچھ بروسرز میں صرف کچھ کا حصہ دستیاب ہیں
- url
-
نوع: سٹرنگ
مقصد: مختصر پیغام کا آدرس جو کہ موجودگی میں ہوتا ہے۔ فراہم کی گئی درخواست کا آدرس
- username
-
نوع: سٹرنگ
یہ کہا ہوا ہے کہ HTTP اصولی تحقیق کی ڈیلیگیشن کے لیے استعمال کیا جاتا ہے
- xhr
-
نوع: فونکشن
کہنا ہے کہ ایک XMLHttpRequest اُجرا کریں۔مقصد ایک ایکٹیو ایکسچینج اور دیگر مواقع میں XMLHttpRequest ہوتا ہے۔ اس کا استعمال یہ ہے کہ آپ خود کو ایک XMLHttpRequest اُجرا کریں یا اس کو بہتر بنائیں۔اس پارامتر کو جی کوئی 1.3 سے پہلے دستیاب نہیں تھا۔
functionهای callback
برای پردازش دادههایی که از $.ajax() دریافت میشوند، باید از functionهای callback استفاده کرد: beforeSend،error،dataFilter،success،complete.
beforeSend
قبل از ارسال درخواست فراخوانی میشود و XMLHttpRequest را به عنوان پارامتر ورودی ارائه میدهد.
error
در صورت بروز خطا در درخواست فراخوانی میشود. XMLHttpRequest object، یک رشته توصیفکننده نوع خطا و یک object exception (اگر موجود باشد) را به عنوان پارامتر ورودی ارائه میدهد.
dataFilter
پس از موفقیت درخواست فراخوانی میشود. دادههای بازگشتی و مقدار پارامتر dataType را به عنوان پارامتر ورودی ارائه میدهد. و باید دادههای جدید (پس از پردازش) را که باید به function callback success منتقل شوند، بازگردانند.
success
پس از درخواست فراخوانی میشود. دادههای بازگشتی و یک رشته شامل کد موفقیت را به عنوان پارامتر ورودی ارائه میدهد.
complete
این function پس از تکمیل درخواست فراخوانی میشود، صرف نظر از موفقیت یا شکست. XMLHttpRequest object را به عنوان پارامتر ورودی و یک رشته شامل کد موفقیت یا خطا را ارائه میدهد.
نوع داده
функشن $.ajax() به اطلاعات ارائه شده توسط سرور برای پردازش دادههای بازگشتی وابسته است. اگر سرور گزارش دهد که دادههای بازگشتی XML هستند، نتایج میتوانند با استفاده از روشهای XML معمول یا انتخابگرهای jQuery جستجو شوند. اگر نوع دیگری مانند HTML قابل مشاهده باشد، دادهها به عنوان متن در نظر گرفته میشوند.
با استفاده از گزینه dataType میتوان نوعهای مختلف دادههای پردازش شده را نیز تعیین کرد. علاوه بر XML ساده، میتوان html، json، jsonp، script یا text را نیز تعیین کرد.
در اینجا، نوعهای text و xml دادهها پردازش نمیشوند. دادهها به سادگی به عنوان responseText یا responseHTML ویژگی XMLHttpRequest به function success callback منتقل میشوند.
توجہ:ما باید اطمینان حاصل کنیم که نوع MIME گزارش شده توسط سرور وب وبسایت با dataType انتخاب شده ما مطابقت دارد. به عنوان مثال، اگر XML باشد، سرور باید text/xml یا application/xml را برای دستیابی به نتایج یکسان اعلام کند.
اگر کسی اسکریپت نوع html تعیین کند، هر اسکریپت داخلی در HTML به عنوان یک رشته قبل از بازگشت به عنوان یک رشته اجرا خواهد شد. به طور مشابه، اگر نوع اسکریپت تعیین شود، ابتدا اسکریپت ایجاد شده توسط سرور در سرور اجرا خواهد شد و سپس آن را به عنوان دادههای متنی بازگردانده خواهد شد.
اگر json طریقہ استعمال کیا گیا تو، تو حاصل کئے گئے اعداد و شمار کو ایک JavaScript شیئر کے طور پر پروسیس کیا جائے گا، اور بنایا گئے شیئر کو نتیجے کے طور پر واپس کردیا جائے گا۔ اس مقصد کا حصول کے لئے، یہ ابتدا میں JSON.parse() استعمال کرکے کوشش کرتا ہے۔ اگر نا داری نہیں، تو ایک فونکشن استعمال کرکے بنایا جائے گا۔
JSON اعداد و شمار ایک جس طرح سے جس سادگی سے JavaScript کے ذریعے پروسیس کی جاسکتا ہے، اس کی ایک ساختاری شکل کا اعداد و شمار ہیں۔ اگر اعداد و شمار کا فائل ریموٹ سرور پر موجود ہے (مزید برآمد، یعنی کسی دیگر دمنی کا حصہ)، تو jsonp طریقہ استعمال کیا جانا چاہئے۔ اس طریقے کا استعمال کیا جاتا ہے تو، ایک جستجو سٹرنگ پارامتر callback=? بنتا ہے، جو درخواست کی URL کے بعد میں جوڑ دیا جاتا ہے۔ سرور کے پاس، JSON اعداد و شمار سے پہلے کالبیک فونکشن کا نام لگایا جائے گا، تاکہ ایک موثر JSONP درخواست مکمل ہوسکے۔ اگر کالبیک فونکشن کا پارامتر نام دینا چاہتے ہیں تو، اس کی جگہ default کی جگہ کسی دوسرے نام کو استعمال کرسکتا ہیں، $.ajax() کا jsonp پارامتر دے کر۔
توجہ:JSONP JSON کی شکل کا ایک توسیع ہے۔ یہ کچھ سرور سائیڈ کا کوڈ استعمال کرنا چاہتا ہے جو جستجو سٹرنگ پارامتروں کو دیکھتا اور اور ان کو پروسیس کرتا ہے۔
اگر script یا jsonp طریقہ استعمال کیا گیا تو، تو جب سرور سے اعداد و شمار حاصل کیے جاتے ہیں تو، اس کا محتوا <script> کا تگ استعمال کیا جاتا ہے، نہ کہ XMLHttpRequest شیئر سے۔ اس صورت میں، $.ajax() ایک XMLHttpRequest شیئر نہیں واپس کردیتا، اور اسی طرح سے، اس میں قبل سے بھیجے گئے واقعات کا تابع نہیں پاس کراتا، جیسے beforeSend۔
سرور کو اعداد و شمار بھیجنا
مقصد سے، Ajax درخواست GET طریقہ استعمال کرتی ہے۔ اگر POST طریقہ استعمال کرنا چاہتے ہیں تو، type پارامتر کا استعمال کرسکتا ہیں۔ یہ چنوئی کا محتوا کس طرح سے سرور کو جاری کیا جائے گا، اس پر بھی اثر انداز ہوتا ہے۔
data چنوئی کا محتوا ایک جستجو سٹرنگ کا محتوا شامل کرسکتا ہے، جیسے key1=value1&key2=value2، یا ایک نقشہ، جیسے {key1: 'value1', key2: 'value2'} ۔ اگر دوسرے کا شکل استعمال کیا گیا تو، اس کا محتوا سینٹر سے جاری کیا جائے گا۔ اس پروسیس کو processData چنوئی کا محتوا جاری کیا جانا ختم کرنے کے لئے استعمال کیا جاسکتا ہے۔ اگر ہم سرور کو ایک XML شیئر کرنا چاہتے ہیں تو، اس طرح کا پروسیس ممکن ہی نہیں ہوگا اور اس صورت میں ہم contentType چنوئی کا محتوا بھی تبدیل کرنا چاہتے ہیں، تاکہ اس کی جگہ ایک مناسب ایم آئی ای چنوئی کا محتوا استعمال کیا جائے۔
گزینههای پیشرفته
گزینه global برای جلوگیری از ثبت callbackهای پاسخ، مانند .ajaxSend، یا ajaxError، و روشهای مشابه استفاده میشود. این در برخی موارد مفید است، مانند ارسال درخواستهای بسیار زیاد و کوتاه، که میتوان این را در ajaxSend غیرفعال کرد.
اگر سرور نیاز به تأیید هویت HTTP دارد، میتوان از نام کاربری و رمز عبور از طریق گزینههای username و password تنظیم کرد.
درخواست Ajax محدود به زمان است، بنابراین هنگامی که هشدارهای خطا به درستی گرفته شده و پردازش میشوند، میتوان از آن برای بهبود تجربه کاربری استفاده کرد. گزینه timeout معمولاً به مقدار پیشفرض باقی میماند، یا از طریق jQuery.ajaxSetup به صورت کلی تنظیم میشود، که به ندرت برای درخواستهای خاص گزینه timeout دوباره تنظیم میشود.
به صورت پیشفرض، درخواست همیشه ارسال میشود، اما مرورگر ممکن است از حافظه پنهان خود دادهها را استخراج کند. برای جلوگیری از استفاده از نتایج حافظه پنهان، میتوان گزینه cache را به false تنظیم کرد. اگر میخواهید اگر دادهها از آخرین درخواست تغییر نکردهاند، گزارش خطا بدهید، میتوان گزینه ifModified را به true تنظیم کرد.
scriptCharset اجازه میدهد تا یک حروفچینی خاص برای درخواست <script> تنظیم شود، که برای script یا دادههای jsonp استفاده میشود. وقتی که حروفچینی اسکریپت و صفحه متفاوت باشد، این بسیار مفید است.
آغاز اولین حرف Ajax از asynchronous است، که به این معنی است که همه عملیاتها همزمان هستند و ترتیب پایان بدون اهمیت است. گزینه async $.ajax() همیشه به true تنظیم میشود، که نشاندهنده این است که در آغاز درخواست، کد دیگر نیز میتواند اجرا شود. این گزینه به شدت توصیه نمیشود که به false تنظیم شود، که به این معنی است که همه درخواستها دیگر نمیتوانند به صورت غیرمستقیم باشند، که میتواند منجر به قفل شدن مرورگر شود.
$.ajax فانکشن XMLHttpRequest شامل ایجاد میکند. معمولاً jQuery فقط درونیتراجم میکند و این شامل میکند، اما کاربران همچنین میتوانند یک xhr شامل خود را از طریق xhr گزینهها به اشتراک بگذارند. شامل معمولاً در حال حاضر در حال حاضر دور ریخته شده است، اما هنوز یک رابط پایهای برای مشاهده و کنترل درخواست ارائه میدهد. به عنوان مثال، فراخوانی .abort() در شامل میتواند درخواست را قبل از اتمام معلق کند.