मैं जावास्क्रिप्ट का एक टुकड़ा लिखना चाह रहा हूं जो वर्तमान url में एक पैरामीटर को जोड़ देगा और फिर पृष्ठ को रीफ्रेश करेगा - मैं यह कैसे कर सकता हूं?
मैं जावास्क्रिप्ट का एक टुकड़ा लिखना चाह रहा हूं जो वर्तमान url में एक पैरामीटर को जोड़ देगा और फिर पृष्ठ को रीफ्रेश करेगा - मैं यह कैसे कर सकता हूं?
जवाबों:
यह काम करना चाहिए (परीक्षण नहीं!)
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 को बदलने की ज़रूरत नहीं है, बस क्वेरी स्ट्रिंग, जिसे स्थान की खोज विशेषता के रूप में जाना जाता है।
जब आप खोज विशेषता के लिए मान निर्दिष्ट कर रहे हैं, तो प्रश्न चिह्न स्वचालित रूप से ब्राउज़र द्वारा डाला जाता है और पृष्ठ पुनः लोड किया जाता है।
window.location.search = '?param=42';
यहां अधिकांश उत्तर यह सुझाव देते हैं कि किसी व्यक्ति को URL पर पैरामीटर (एस) को जोड़ना चाहिए, निम्नलिखित स्निपेट या इसी तरह की भिन्नता:
location.href = location.href + "¶meter=" + value;
यह अधिकांश मामलों के लिए काफी अच्छा काम करेगा।
तथापि
मेरी राय में एक URL पर एक पैरामीटर को जोड़ने का यह सही तरीका नहीं है।
क्योंकि सुझाए गए दृष्टिकोण का परीक्षण नहीं होता है यदि पैरामीटर पहले से ही 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 के बारे में अधिक जानकारी के लिए इस लिंक का अनुसरण करें विभिन्न ब्राउज़रों में 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;
ऊपर @ yeyo के विचारशील उत्तर के लिए एक छोटा बग फिक्स।
परिवर्तन:
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);