উত্তর:
এটি কাজ করা উচিত (পরীক্ষিত নয়!)
var url = window.location.href;
if (url.indexOf('?') > -1){
url += '¶m=1'
}else{
url += '?param=1'
}
window.location.href = url;
স্বীকৃত উত্তরের চেয়ে কম, একই কাজ করে তবে তা সহজ রাখছেন:
window.location.search += '¶m=42';
আমাদের পুরো url পরিবর্তন করতে হবে না, কেবলমাত্র ক্যোরি স্ট্রিং, যা অবস্থানের অনুসন্ধান বৈশিষ্ট্য হিসাবে পরিচিত।
আপনি যখন অনুসন্ধানের বৈশিষ্ট্যে কোনও মান নির্ধারণ করছেন, তখন প্রশ্ন চিহ্নটি স্বয়ংক্রিয়ভাবে ব্রাউজারটি দ্বারা প্রবেশ করা হয় এবং পৃষ্ঠাটি পুনরায় লোড করা হয় is
window.location.search = '?param=42';
এখানে বেশিরভাগ উত্তরের পরামর্শ অনুসারে একটিতে ইউআরএলটিতে প্যারামিটার যুক্ত করা উচিত যা নিম্নলিখিত স্নিপেটের মতো বা অনুরূপ পরিবর্তনের মতো:
location.href = location.href + "¶meter=" + value;
এটি বেশিরভাগ ক্ষেত্রে ক্ষেত্রে বেশ কার্যকর হবে।
যাহোক
এটি আমার মতে কোনও URL এ কোনও পরামিতি যুক্ত করার সঠিক উপায় নয়।
কারণ প্রস্তাবিত পদ্ধতির প্যারামিটারটি ইতিমধ্যে ইউআরএলটিতে সেট করা আছে কিনা তা পরীক্ষা করে না, সাবধান না হলে একই পরামিতিটি একাধিকবার পুনরাবৃত্তি করে খুব দীর্ঘ URL সহ শেষ হতে পারে। অর্থাৎ,
https://stackoverflow.com/?¶m=1¶m=1¶m=1¶m=1¶m=1¶m=1¶m=1¶m=1¶m=1
সমস্যা শুরু যেখানে এই মুহুর্তে। প্রস্তাবিত পদ্ধতিটি একাধিক পৃষ্ঠা রিফ্রেশ হওয়ার পরে খুব দীর্ঘ URL তৈরি করতে পারে এবং ইউআরএলকে অবৈধ করে তোলে। দীর্ঘ URL সম্পর্কে আরও তথ্যের জন্য এই লিঙ্কটি অনুসরণ করুন বিভিন্ন ব্রাউজারে কোনও URL এর সর্বোচ্চ দৈর্ঘ্য কত?
এটি আমার প্রস্তাবিত পদ্ধতি:
function URL_add_parameter(url, param, value){
var hash = {};
var parser = document.createElement('a');
parser.href = url;
var parameters = parser.search.split(/\?|&/);
for(var i=0; i < parameters.length; i++) {
if(!parameters[i])
continue;
var ary = parameters[i].split('=');
hash[ary[0]] = ary[1];
}
hash[param] = value;
var list = [];
Object.keys(hash).forEach(function (key) {
list.push(key + '=' + hash[key]);
});
parser.search = '?' + list.join('&');
return parser.href;
}
এই ফাংশনটির সাথে একটিকে নিম্নলিখিতটি করতে হবে:
location.href = URL_add_parameter(location.href, 'param', 'value');
if(window.location.search.indexOf('¶m=') == -1) {window.location.search += '¶m=1';}
indexOf
ফলে কোডে অপ্রয়োজনীয় জটিলতার পরিচয় দেওয়া হতে পারে।
function gotoItem( item ){
var url = window.location.href;
var separator = (url.indexOf('?') > -1) ? "&" : "?";
var qs = "item=" + encodeURIComponent(item);
window.location.href = url + separator + qs;
}
আরও কম্পাট সংস্করণ
function gotoItem( item ){
var url = window.location.href;
url += (url.indexOf('?') > -1)?"&":"?" + "item=" + encodeURIComponent(item);
window.location.href = url;
}
নীচের কোডটি পরীক্ষা করুন:
/*Get current URL*/
var _url = location.href;
/*Check if the url already contains ?, if yes append the parameter, else add the parameter*/
_url = ( _url.indexOf('?') !== -1 ) ? _url+'¶m='+value : _url+'?param='+value;
/*reload the page */
window.location.href = _url;
উপরে @ ইয়োয়ের চিন্তামূলক উত্তরের জন্য একটি ছোট বাগ ফিক্স।
পরিবর্তন:
var parameters = parser.search.split(/\?|&/);
প্রতি:
var parameters = parser.search.split(/\?|&/);
এটা চেষ্টা কর
var url = ApiUrl(`/customers`);
if(data){
url += '?search='+data;
}
else
{
url += `?page=${page}&per_page=${perpage}`;
}
console.log(url);