جاوا اسکرپٹ میں استفسار کی سٹرنگ ویلیوز حاصل کریں۔

یو آر ایل میں، استفسار کی سٹرنگ کی قدریں اکثر درخواست کے بارے میں معلومات فراہم کرتی ہیں، جیسے کہ تلاش کے لیے پیرامیٹرز یا کسی چیز کی ID جسے آپ استعمال کر رہے ہیں۔ اگر کسی بھی کاروبار یا درخواست کی منطق کو فرنٹ اینڈ میں ہینڈل کیا جاتا ہے، تو یہ جاننا ضروری ہے کہ URL سے استفسار کے اسٹرنگ کی قدروں کو کیسے بازیافت کیا جائے۔ اس کو حاصل کرنے کے کئی طریقے ہیں، جن میں سے کچھ ہم یہاں دیکھیں گے۔

URLSearchParams

۔ URLSearchParams انٹرفیس کو IE 11 کے علاوہ تمام بڑے براؤزر ورژنز سے سپورٹ کیا جاتا ہے۔ یہ یو آر ایل کے استفسار کی تار کو پارس کرکے اور اقدار تک رسائی کا راستہ فراہم کرکے کام کرتا ہے۔ مثال کے طور پر:

let params = new URLSearchParams('q=node&page=2');
params.get('q'); 
params.get('page'); 

اس انٹرفیس کے منفی پہلوؤں میں سے ایک یہ ہے کہ آپ کو اسے صرف یو آر ایل کے استفسار کے سلسلے میں پاس کرنا ہوگا۔ اگر آپ موجودہ براؤزر URL کے ساتھ کام کر رہے ہیں، تو ایسا کرنا آسان ہے کیونکہ آپ بس پاس کر سکتے ہیں۔ window.location.search. اگر آپ کسی دوسرے یو آر ایل کے ساتھ کام کر رہے ہیں، تو آپ کو الگ سے استفسار کی تار کو پارس آؤٹ اور پاس کرنے کی ضرورت ہوگی۔

استفسار کے پیرامیٹرز کو کسی شے میں پارس کرنے کے لیے، استعمال کریں۔ URL.searchParamsکی .entries() طریقہ، جو ایک واپس کرتا ہے Iterator کلیدی/قدر کے جوڑے، اور Object.fromEntries اسے کسی چیز میں تبدیل کرنے کے لیے۔

let params = new URLSearchParams('q=node&page=2');
let entries = params.entries();
Object.fromEntries(entries); 

URL آبجیکٹ

۔ URL API کو IE 11 کے علاوہ تمام بڑے براؤزر ورژنز کے ذریعے بھی سپورٹ کیا جاتا ہے۔ یہ URLs کو پارس کرنے کا زیادہ لچکدار طریقہ پیش کرتا ہے، اور یہ استفسار کے اسٹرنگ ویلیوز تک رسائی کا ایک طریقہ بھی فراہم کرتا ہے۔ مثال کے طور پر:

const url = new URL('https://stackabuse.com/search?q=node&page=2');
const searchParams = url.searchParams;

searchParams.get('q'); 
searchParams.get('page'); 

url.searchParams ایک ہی قسم کی مثال آبجیکٹ ہے جس کے ذریعہ واپس کیا گیا ہے۔ URLSearchParams.

۔ url اوپر والے آبجیکٹ میں بھی یو آر ایل کے تمام حصے اس کے حصوں میں ٹوٹے ہوئے ہیں۔ مثال کے طور پر:

url.href; 
url.origin; 
url.protocol; 
url.host; 
url.hostname; 
url.port; 
url.pathname; 
url.search; 
url.hash; 

خالص جاوا اسکرپٹ

اگر کسی وجہ سے آپ مندرجہ بالا APIs تک رسائی حاصل کرنے کے قابل نہیں ہیں یا پارسنگ پر مزید کنٹرول حاصل کرنا چاہتے ہیں، تو آپ سوال کے تار کو کسی آبجیکٹ میں پارس کرنے کے لیے درج ذیل کوڈ کا استعمال کر سکتے ہیں۔

function getQueryParams(url) {
    const paramArr = url.slice(url.indexOf('?') + 1).split('&');
    const params = {};
    paramArr.map(param => {
        const [key, val] = param.split('=');
        params[key] = decodeURIComponent(val);
    })
    return params;
}

نوٹ: سادہ جے ایس میں استفسار کے پیرامز کو پارس کرنے کے بہت سے طریقے ہیں، جو دوسروں کے مقابلے میں کچھ زیادہ پیچیدہ (اور مضبوط) ہیں۔ یہ صرف ایک طریقہ ہے، اور اس سے ڈھال لیا گیا تھا۔ یہ خلاصہ.

اس کے بعد ہم اس سادہ جے ایس فنکشن کو کسی ایک سوال کے پیرم کو سٹرنگ میں پارس کرنے کے لیے استعمال کر سکتے ہیں:

getQueryParams('https://stackabuse.com/search?q=node&page=2')

ٹائم اسٹیمپ:

سے زیادہ Stackabuse