दिलचस्प पोस्ट
पायथन में एक टैब से अलग फ़ाइल को पार्स करना MySQL: सॉर्ट करें GROUP_CONCAT मान स्थानीय होस्ट पर रीकैपचा उपयोग करना क्रोम पर फ्लोटिंग पॉइंट नंबर के लिए एचटीएमएल 5 इनपुट टाइप = "नंबर" तत्व 'Xp_cmdshell' SQL सर्वर सक्षम करें मैं नवीनतम जेआरई / जेडीके को एक्सई या एमएसआई इंस्टॉलर के बजाय एक ज़िप फ़ाइल के रूप में कैसे प्राप्त करूं? मैं विंडोज़ में बाल प्रक्रियाओं को स्वचालित रूप से कैसे नष्ट कर सकता हूं? डॉकर मशीन में स्थानीय संस्करणों को कैसे माउंट करने के लिए क्या विनाश बाह्य रूप से एक विरोधी है? location.host बनाम location.hostname और क्रॉस-ब्राउज़र संगतता? एकाधिक फ़ाइलों में जावास्क्रिप्ट में वैश्विक चर फ़ंक्शन पॉइंटर विभिन्न हस्ताक्षरों को डाली गई मेजबान मशीन के साथ कंटेनर ऑटो सिंक समय डॉक करेंगे? रिश्बोर्स मोड कैसे करें, यूडब्ल्यूपी में पूर्ववर्ती (या समकक्ष) ढूंढें JTable में एक विभक्त के रूप में एक खाली कॉलम का उपयोग करना

जावास्क्रिप्ट के साथ यूआरएल को एक पैरामीटर जोड़ना

एक वेब अनुप्रयोग में जो AJAX कॉल का उपयोग करता है, मुझे एक अनुरोध सबमिट करने की आवश्यकता है, लेकिन यूआरएल के अंत में पैरामीटर जोड़ना है, उदाहरण के लिए:

मूल यूआरएल:

http: //server/myapp.php आईडी = 10

परिणाम वाला URL:

http: //server/myapp.php? id = 10 और सक्षम = सच है

एक जावास्क्रिप्ट फ़ंक्शन की तलाश है जो प्रत्येक पैरामीटर को देखकर यूआरएल को पार्स करता है, तो नया पैरामीटर जोड़ता है या एक पहले से मौजूद है तो मान को अद्यतन करता है।

Solutions Collecting From Web of "जावास्क्रिप्ट के साथ यूआरएल को एक पैरामीटर जोड़ना"

एक बुनियादी कार्यान्वयन जिसे आपको अनुकूलन करने की आवश्यकता होगी, इस तरह कुछ दिखाई देगा:

function insertParam(key, value) { key = encodeURI(key); value = encodeURI(value); var kvp = document.location.search.substr(1).split('&'); var i=kvp.length; var x; while(i--) { x = kvp[i].split('='); if (x[0]==key) { x[1] = value; kvp[i] = x.join('='); break; } } if(i<0) {kvp[kvp.length] = [key,value].join('=');} //this will reload the page, it's likely better to store this until finished document.location.search = kvp.join('&'); } 

यह एक रैगेक्स या खोज आधारित समाधान के रूप में लगभग दोगुनी दोगुनी है, लेकिन यह पूरी तरह से क्वेरी स्ट्रिंग की लंबाई और किसी भी मैच के सूचक पर निर्भर करता है


धीमी गति से रीजॉक्स विधि, जिसे मैं पूरा करने के लिए बेंचमार्क किया (लगभग + 150% धीमा)

 function insertParam2(key,value) { key = encodeURIComponent(key); value = encodeURIComponent(value); var s = document.location.search; var kvp = key+"="+value; var r = new RegExp("(&|\\?)"+key+"=[^\&]*"); s = s.replace(r,"$1"+kvp); if(!RegExp.$1) {s += (s.length>0 ? '&' : '?') + kvp;}; //again, do what you will here document.location.search = s; } 

आपके योगदान के लिए धन्यवाद। मैंने एनकाटा कोड का इस्तेमाल किया और उस मामले को शामिल करने के लिए संशोधित किया, जहां यूआरएल में कोई क्वेरी स्ट्रिंग नहीं है। आशा है कि इससे मदद मिलेगी

 function insertParam(key, value) { key = escape(key); value = escape(value); var kvp = document.location.search.substr(1).split('&'); if (kvp == '') { document.location.search = '?' + key + '=' + value; } else { var i = kvp.length; var x; while (i--) { x = kvp[i].split('='); if (x[0] == key) { x[1] = value; kvp[i] = x.join('='); break; } } if (i < 0) { kvp[kvp.length] = [key, value].join('='); } //this will reload the page, it's likely better to store this until finished document.location.search = kvp.join('&'); } } 

यह बहुत आसान समाधान है यह पैरामीटर अस्तित्व को नियंत्रित नहीं करता है, और यह मौजूदा मान को परिवर्तित नहीं करता है। यह आपके पैरामीटर को अंत में जोड़ता है, ताकि आप अपने बैक-एंड कोड में नवीनतम मान प्राप्त कर सकें।

 function addParameterToURL(param){ _url = location.href; _url += (_url.split('?')[1] ? '&':'?') + param; return _url; } 

यहाँ एक बेहद सरल संस्करण है, सूक्ष्म-अनुकूलित प्रदर्शन की बजाय सुगमता और कम लाइनों के लिए व्यापार का आदान-प्रदान करना (और हम कुछ मिलिसेकेंड अंतर के बारे में बात कर रहे हैं, वास्तविक … इस प्रकार की प्रकृति (वर्तमान दस्तावेज़ के स्थान पर कार्य करना) ), यह एक पृष्ठ पर एक बार दौड़ा जाएगा)।

 /** * Add a URL parameter (or changing it if it already exists) * @param {search} string this is typically document.location.search * @param {key} string the key to set * @param {val} string value */ var addUrlParam = function(search, key, val){ var newParam = key + '=' + val, params = '?' + newParam; // If the "search" string exists, then build params from it if (search) { // Try to replace an existance instance params = search.replace(new RegExp('([?&])' + key + '[^&]*'), '$1' + newParam); // If nothing was replaced, then add the new param to the end if (params === search) { params += '&' + newParam; } } return params; }; 

आप तब इस तरह का प्रयोग करेंगे:

 document.location.pathname + addUrlParam(document.location.search, 'foo', 'bar'); 

का उपयोग करते हुए:

उदाहरण:

 var url = new URL("http://foo.bar/?x=1&y=2"); // If your expected result is "http://foo.bar/?x=1&y=2&x=42" url.searchParams.append('x', 42); // If your expected result is "http://foo.bar/?x=42&y=2" url.searchParams.set('x', 42); 

मेरे पास एक 'वर्ग' है जो यह करता है और यहां यह है:

 function QS(){ this.qs = {}; var s = location.search.replace( /^\?|#.*$/g, '' ); if( s ) { var qsParts = s.split('&'); var i, nv; for (i = 0; i < qsParts.length; i++) { nv = qsParts[i].split('='); this.qs[nv[0]] = nv[1]; } } } QS.prototype.add = function( name, value ) { if( arguments.length == 1 && arguments[0].constructor == Object ) { this.addMany( arguments[0] ); return; } this.qs[name] = value; } QS.prototype.addMany = function( newValues ) { for( nv in newValues ) { this.qs[nv] = newValues[nv]; } } QS.prototype.remove = function( name ) { if( arguments.length == 1 && arguments[0].constructor == Array ) { this.removeMany( arguments[0] ); return; } delete this.qs[name]; } QS.prototype.removeMany = function( deleteNames ) { var i; for( i = 0; i < deleteNames.length; i++ ) { delete this.qs[deleteNames[i]]; } } QS.prototype.getQueryString = function() { var nv, q = []; for( nv in this.qs ) { q[q.length] = nv+'='+this.qs[nv]; } return q.join( '&' ); } QS.prototype.toString = QS.prototype.getQueryString; //examples //instantiation var qs = new QS; alert( qs ); //add a sinle name/value qs.add( 'new', 'true' ); alert( qs ); //add multiple key/values qs.add( { x: 'X', y: 'Y' } ); alert( qs ); //remove single key qs.remove( 'new' ) alert( qs ); //remove multiple keys qs.remove( ['x', 'bogus'] ) alert( qs ); 

मैंने स्ट्रिंग विधि को ओवरराइड कर दिया है, इसलिए QS :: getQueryString को कॉल करने की कोई आवश्यकता नहीं है, आप क्यूएस :: स्ट्रिंग या का उपयोग कर सकते हैं, जैसा कि मैंने उदाहरण में किया है, केवल ऑब्जेक्ट को स्ट्रिंग में जकड़ लिया जा रहा है।

 /** * Add a URL parameter * @param {url} string url * @param {param} string the key to set * @param {value} string value */ var addParam = function(url, param, value) { param = encodeURIComponent(param); var a = document.createElement('a'); param += (value ? "=" + encodeURIComponent(value) : ""); a.href = url; a.search += (a.search ? "&" : "") + param; return a.href; } /** * Add a URL parameter (or modify if already exists) * @param {url} string url * @param {param} string the key to set * @param {value} string value */ var addOrReplaceParam = function(url, param, value) { param = encodeURIComponent(param); var r = "([&?]|&amp;)" + param + "\\b(?:=(?:[^&#]*))*"; var a = document.createElement('a'); var regex = new RegExp(r); var str = param + (value ? "=" + encodeURIComponent(value) : ""); a.href = url; var q = a.search.replace(regex, "$1"+str); if (q === a.search) { a.search += (a.search ? "&" : "") + str; } else { a.search = q; } return a.href; } url = "http://www.example.com#hashme"; newurl = addParam(url, "ciao", "1"); alert(newurl); 

और कृपया ध्यान दें कि पैरामीटर को क्वेरी स्ट्रिंग में जोड़ा जाने से पहले एन्कोड किया जाना चाहिए।

http://jsfiddle.net/48z7z4kx/

कुछ समय हम देखते हैं ? अंत URL पर, मुझे कुछ समाधान मिले जो परिणाम के रूप में file.php?&foo=bar उत्पन्न करते हैं I मैं पूरी तरह से अपने स्वयं के समाधान के काम के साथ आया था जैसा मैं चाहता हूं!

 location.origin + location.pathname + location.search + (location.search=='' ? '?' : '&') + 'lang=ar' 

ध्यान दें: location.origin IE में काम नहीं करता है, यहां इसका फ़िक्स है

यदि आपके पास url वाला स्ट्रिंग है जिसे आप एक परम के साथ सजाने के लिए चाहते हैं, तो आप यह कोशिश कर सकते हैं:

 urlstring += ( urlstring.match( /[\?]/g ) ? '&' : '?' ) + 'param=value'; 

इसका मतलब है कि ? पैरामीटर का उपसर्ग होगा, लेकिन यदि आपके पास पहले से ही है ? urlstring , और उपसर्ग होगा।

यदि आप encodeURI( paramvariable ) पैरामीटर नहीं करते हैं, तो मैं एक paramvariable अंदर encodeURI( paramvariable ) करने की सलाह देता paramvariable ; या यदि आपके पास इसमें अजीब अक्षर हैं

encodeURI फ़ंक्शन के उपयोग के लिए जावास्क्रिप्ट यूआरएल एन्कोडिंग देखें।

https://github.com/derek-watson/jsUri देखें

यूआरआई और जावास्क्रिप्ट में क्वेरी स्ट्रिंग हेरफेर।

स्टीवन लेविथान द्वारा इस परियोजना में उत्कृष्ट पार्सयूआरआई नियमित अभिव्यक्ति पुस्तकालय शामिल है। आप सभी आकृतियों और आकारों के यूआरएल को सुरक्षित रूप से पार्स कर सकते हैं, हालांकि अमान्य या घृणित

यह है कि जब मैं कुछ बुनियादी यूआरएल परम जोड़ों या सर्वर-पार्ट्स जैसे नोड। जेएस पर अपडेट करता हूं, तब मैं इसका उपयोग करता हूं।

CoffeScript:

 ### @method addUrlParam Adds parameter to a given url. If the parameter already exists in the url is being replaced. @param {string} url @param {string} key Parameter's key @param {string} value Parameter's value @returns {string} new url containing the parameter ### addUrlParam = (url, key, value) -> newParam = key+"="+value result = url.replace(new RegExp('(&|\\?)' + key + '=[^\&|#]*'), '$1' + newParam) if result is url result = if url.indexOf('?') != -1 then url.split('?')[0] + '?' + newParam + '&' + url.split('?')[1] else if url.indexOf('#') != -1 then url.split('#')[0] + '?' + newParam + '#' + url.split('#')[1] else url + '?' + newParam return result 

यह मेरा अपना प्रयास था, लेकिन मैं उतना ही साफ महसूस करता हूं जैसे कि ansakata द्वारा जवाब का उपयोग करता हूँ:

 function AddUrlParameter(sourceUrl, parameterName, parameterValue, replaceDuplicates) { if ((sourceUrl == null) || (sourceUrl.length == 0)) sourceUrl = document.location.href; var urlParts = sourceUrl.split("?"); var newQueryString = ""; if (urlParts.length > 1) { var parameters = urlParts[1].split("&"); for (var i=0; (i < parameters.length); i++) { var parameterParts = parameters[i].split("="); if (!(replaceDuplicates && parameterParts[0] == parameterName)) { if (newQueryString == "") newQueryString = "?"; else newQueryString += "&"; newQueryString += parameterParts[0] + "=" + parameterParts[1]; } } } if (newQueryString == "") newQueryString = "?"; else newQueryString += "&"; newQueryString += parameterName + "=" + parameterValue; return urlParts[0] + newQueryString; } 

साथ ही, मुझे स्टैकहोवरफ्लो पर एक और पोस्ट से यह jQuery प्लगइन मिला है, और अगर आपको अधिक लचीलेपन की आवश्यकता है तो आप उसका उपयोग कर सकते हैं: http://plugins.jquery.com/project/query-object

मुझे लगता होगा कि कोड होगा (परीक्षण नहीं किया है):

 return $.query.parse(sourceUrl).set(parameterName, parameterValue).toString(); 

मैं जेएस में यूआरएल को संभालने के लिए इस छोटी लेकिन पूर्ण लाइब्रेरी के साथ जाता हूं:

https://github.com/Mikhus/jsurl

यह एक क्वेरी पैरामीटर जोड़ने का एक आसान तरीका है:

 const query = new URLSearchParams(window.location.search); query.append("enabled", "true"); 

और वह यहाँ और अधिक है

धन्यवाद, T04435

मुझे मेहमेत फतिह यिलिज्ज़ का जवाब पसंद आया, उसने भी पूरे सवाल का जवाब नहीं दिया।

अपने जवाब के रूप में एक ही पंक्ति में, मैं इस कोड का उपयोग करता हूं:

"यह पैरामीटर अस्तित्व को नियंत्रित नहीं करता, और यह मौजूदा मान को परिवर्तित नहीं करता है। यह आपके पैरामीटर को अंत में जोड़ता है"

  /** add a parameter at the end of the URL. Manage '?'/'&', but not the existing parameters. * does escape the value (but not the key) */ function addParameterToURL(_url,_key,_value){ var param = _key+'='+escape(_value); var sep = '&'; if (_url.indexOf('?') < 0) { sep = '?'; } else { var lastChar=_url.slice(-1); if (lastChar == '&') sep=''; if (lastChar == '?') sep=''; } _url += sep + param; return _url; } 

और परीक्षक:

  /* function addParameterToURL_TESTER_sub(_url,key,value){ //log(_url); log(addParameterToURL(_url,key,value)); } function addParameterToURL_TESTER(){ log('-------------------'); var _url ='www.google.com'; addParameterToURL_TESTER_sub(_url,'key','value'); addParameterToURL_TESTER_sub(_url,'key','Text Value'); _url ='www.google.com?'; addParameterToURL_TESTER_sub(_url,'key','value'); _url ='www.google.com?A=B'; addParameterToURL_TESTER_sub(_url,'key','value'); _url ='www.google.com?A=B&'; addParameterToURL_TESTER_sub(_url,'key','value'); _url ='www.google.com?A=1&B=2'; addParameterToURL_TESTER_sub(_url,'key','value'); }//*/ 

निम्नलिखित फ़ंक्शन आपको यूआरएल को या पैरामीटर को जोड़ने, अपडेट करने और हटाने में मदद करेगा

//उदाहरण 1

 var myURL = '/search'; myURL = updateUrl(myURL,'location','california'); console.log('added location...' + myURL); //added location.../search?location=california myURL = updateUrl(myURL,'location','new york'); console.log('updated location...' + myURL); //updated location.../search?location=new%20york myURL = updateUrl(myURL,'location'); console.log('removed location...' + myURL); //removed location.../search 

// example2

 var myURL = '/search?category=mobile'; myURL = updateUrl(myURL,'location','california'); console.log('added location...' + myURL); //added location.../search?category=mobile&location=california myURL = updateUrl(myURL,'location','new york'); console.log('updated location...' + myURL); //updated location.../search?category=mobile&location=new%20york myURL = updateUrl(myURL,'location'); console.log('removed location...' + myURL); //removed location.../search?category=mobile 

// Example3

 var myURL = '/search?location=texas'; myURL = updateUrl(myURL,'location','california'); console.log('updated location...' + myURL); //added location.../search?location=california myURL = updateUrl(myURL,'location','new york'); console.log('updated location...' + myURL); //updated location.../search?location=new%20york myURL = updateUrl(myURL,'location'); console.log('removed location...' + myURL); //removed location.../search 

// Example4

 var myURL = '/search?category=mobile&location=texas'; myURL = updateUrl(myURL,'location','california'); console.log('updated location...' + myURL); //added location.../search?category=mobile&location=california myURL = updateUrl(myURL,'location','new york'); console.log('updated location...' + myURL); //updated location.../search?category=mobile&location=new%20york myURL = updateUrl(myURL,'location'); console.log('removed location...' + myURL); //removed location.../search?category=mobile 

यहाँ समारोह है

 function updateUrl(url,key,value){ if(value!=undefined){ value = encodeURI(value); } var urls = url.split('?'); var baseUrl = urls[0]; var parameters = ''; var outPara = {}; if(urls.length>1){ parameters = urls[1]; } if(parameters!=''){ parameters = parameters.split('&'); for(k in parameters){ var keyVal = parameters[k]; keyVal = keyVal.split('='); var ekey = keyVal[0]; var eval = ''; if(keyVal.length>1){ eval = keyVal[1]; } outPara[ekey] = eval; } } if(value!=undefined){ outPara[key] = value; }else{ delete outPara[key]; } parameters = []; for(var k in outPara){ parameters.push(k + '=' + outPara[k]); } var finalUrl = baseUrl; if(parameters.length>0){ finalUrl += '?' + parameters.join('&'); } return finalUrl; } 

ठीक है, यहाँ मैं दो फ़ंक्शंस की तुलना करता हूं, एक मेरे द्वारा (रेगएक्सपी) बनाया गया और दूसरा (annakata) द्वारा बनाया गया है।

भाजित सरणी:

 function insertParam(key, value) { key = escape(key); value = escape(value); var kvp = document.location.search.substr(1).split('&'); var i=kvp.length; var x; while(i--) { x = kvp[i].split('='); if (x[0]==key) { x[1] = value; kvp[i] = x.join('='); break; } } if(i<0) {kvp[kvp.length] = [key,value].join('=');} //this will reload the page, it's likely better to store this until finished return "&"+kvp.join('&'); } 

रेगेक्स विधि:

 function addParameter(param, value) { var regexp = new RegExp("(\\?|\\&)" + param + "\\=([^\\&]*)(\\&|$)"); if (regexp.test(document.location.search)) return (document.location.search.toString().replace(regexp, function(a, b, c, d) { return (b + param + "=" + value + d); })); else return document.location.search+ param + "=" + value; } 

टेस्टिंग केस:

 time1=(new Date).getTime(); for (var i=0;i<10000;i++) { addParameter("test","test"); } time2=(new Date).getTime(); for (var i=0;i<10000;i++) { insertParam("test","test"); } time3=(new Date).getTime(); console.log((time2-time1)+" "+(time3-time2)); 

ऐसा लगता है कि यहां तक ​​कि सबसे सरल समाधान के साथ (जब regexp केवल परीक्षण का उपयोग करता है और प्रवेश नहीं करता है। फ़ैशन फ़ंक्शन) यह अभी भी spliting से धीमी है … अच्छा। रेगेक्स थोड़े धीमी है लेकिन … उह …

यदि आप लिंक में यूआरएल के आसपास या कहीं और गड़बड़ कर रहे हैं, तो आपको हॅश को खाते में भी लेना पड़ सकता है। समाधान समझने में काफी आसान है। शायद सबसे तेज़ नहीं क्योंकि यह एक regex का उपयोग करता है … लेकिन 99.999% मामलों में, अंतर वास्तव में कोई फर्क नहीं पड़ता!

 function addQueryParam( url, key, val ){ var parts = url.match(/([^?#]+)(\?[^#]*)?(\#.*)?/); var url = parts[1]; var qs = parts[2] || ''; var hash = parts[3] || ''; if ( !qs ) { return url + '?' + key + '=' + encodeURIComponent( val ) + hash; } else { var qs_parts = qs.substr(1).split("&"); var i; for (i=0;i<qs_parts.length;i++) { var qs_pair = qs_parts[i].split("="); if ( qs_pair[0] == key ){ qs_parts[ i ] = key + '=' + encodeURIComponent( val ); break; } } if ( i == qs_parts.length ){ qs_parts.push( key + '=' + encodeURIComponent( val ) ); } return url + '?' + qs_parts.join('&') + hash; } } 

ये है जो मैं करता हूं। मेरे संपादन पाराम () फ़ंक्शन का उपयोग करके आप किसी भी पैरामीटर को जोड़, हटा सकते हैं या बदल सकते हैं, फिर यूआरएल को अपडेट करने के लिए बिल्ट इनस्टॉप स्टेशन () फ़ंक्शन का उपयोग कर सकते हैं:

 window.history.replaceState('object or string', 'Title', 'page.html' + editParams('enable', 'true')); // background functions below: // add/change/remove URL parameter // use a value of false to remove parameter // returns a url-style string function editParams (key, value) { key = encodeURI(key); var params = getSearchParameters(); if (Object.keys(params).length === 0) { if (value !== false) return '?' + key + '=' + encodeURI(value); else return ''; } if (value !== false) params[key] = encodeURI(value); else delete params[key]; if (Object.keys(params).length === 0) return ''; return '?' + $.map(params, function (value, key) { return key + '=' + value; }).join('&'); } // Get object/associative array of URL parameters function getSearchParameters () { var prmstr = window.location.search.substr(1); return prmstr !== null && prmstr !== "" ? transformToAssocArray(prmstr) : {}; } // convert parameters from url-style string to associative array function transformToAssocArray (prmstr) { var params = {}, prmarr = prmstr.split("&"); for (var i = 0; i < prmarr.length; i++) { var tmparr = prmarr[i].split("="); params[tmparr[0]] = tmparr[1]; } return params; } 

मैं सोच सकता हूँ कि सबसे सरल समाधान यह विधि है, जो संशोधित यूआरआई लौटाएगा। मुझे लगता है कि आप में से ज्यादातर तरीके बहुत कठिन काम कर रहे हैं।

 function setParam(uri, key, val) { return uri .replace(new RegExp("([?&]"+key+"(?=[=&#]|$)[^#&]*|(?=#|$))"), "&"+key+"="+encodeURIComponent(val)) .replace(/^([^?&]+)&/, "$1?"); } 

जैसा कि मैंने उपरोक्त उत्तरों में से कोई भी नहीं बता सकता, उस स्थिति को संबोधित करते हैं जहां क्वेरी स्ट्रिंग पैरामीटर हैं जो स्वयं एक सरणी हैं और इसलिए एक से अधिक बार दिखाई देंगे, जैसे:

 http://example.com?sizes[]=a&sizes[]=b 

निम्न फ़ंक्शन है जो मैंने लिखा है: document.location.search को अपडेट document.location.search । यह एक तर्क के रूप में कुंजी / मान जोड़े सरणियों की एक सरणी लेता है और यह बाद के एक संशोधित संस्करण को वापस करेगा जो आप जो भी चाहें कर सकते हैं। मैं इसे इस तरह प्रयोग कर रहा हूँ:

 var newParams = [ ['test','123'], ['best','456'], ['sizes[]','XXL'] ]; var newUrl = document.location.pathname + insertParams(newParams); history.replaceState('', '', newUrl); 

यदि वर्तमान यूआरएल था:

http://example.com/index.php?test=replaceme&sizes[]=XL

यह आपको मिलेगा

http://example.com/index.php?test=123&sizes[]=XL&sizes[]=XXL&best=456

समारोह

 function insertParams(params) { var result; var ii = params.length; var queryString = document.location.search.substr(1); var kvps = queryString ? queryString.split('&') : []; var kvp; var skipParams = []; var i = kvps.length; while (i--) { kvp = kvps[i].split('='); if (kvp[0].slice(-2) != '[]') { var ii = params.length; while (ii--) { if (params[ii][0] == kvp[0]) { kvp[1] = params[ii][1]; kvps[i] = kvp.join('='); skipParams.push(ii); } } } } var ii = params.length; while (ii--) { if (skipParams.indexOf(ii) === -1) { kvps.push(params[ii].join('=')); } } result = kvps.length ? '?' + kvps.join('&') : ''; return result; } 

सबसे अधिक समाधान, यदि आपके पास पहले से कोई टैग है या नहीं, तो काम करता है, और इसे automatcly को निकाल देता है, इसलिए यह समान टैग जोड़ते रहें, मज़ेदार

 function changeURL(tag) { if(window.location.href.indexOf("?") > -1) { if(window.location.href.indexOf("&"+tag) > -1){ var url = window.location.href.replace("&"+tag,"")+"&"+tag; } else { var url = window.location.href+"&"+tag; } }else{ if(window.location.href.indexOf("?"+tag) > -1){ var url = window.location.href.replace("?"+tag,"")+"?"+tag; } else { var url = window.location.href+"?"+tag; } } window.location = url; } 

फिर

 changeURL("i=updated"); 

प्रयत्न
नियमित अभिव्यक्ति, इतनी धीमी है, इस प्रकार:

 var SetParamUrl = function(_k, _v) {// replace and add new parameters let arrParams = window.location.search !== '' ? decodeURIComponent(window.location.search.substr(1)).split('&').map(_v => _v.split('=')) : Array(); let index = arrParams.findIndex((_v) => _v[0] === _k); index = index !== -1 ? index : arrParams.length; _v === null ? arrParams = arrParams.filter((_v, _i) => _i != index) : arrParams[index] = [_k, _v]; let _search = encodeURIComponent(arrParams.map(_v => _v.join('=')).join('&')); let newurl = window.location.protocol + "//" + window.location.host + window.location.pathname + (arrParams.length > 0 ? '?' + _search : ''); // window.location = newurl; //reload if (history.pushState) { // without reload window.history.pushState({path:newurl}, null, newurl); } }; var GetParamUrl = function(_k) {// get parameter by key let sPageURL = decodeURIComponent(window.location.search.substr(1)), sURLVariables = sPageURL.split('&').map(_v => _v.split('=')); let _result = sURLVariables.find(_v => _v[0] === _k); return _result[1]; }; 

उदाहरण:

  // https://some.com/some_path GetParamUrl('cat');//undefined SetParamUrl('cat', "strData");// https://some.com/some_path?cat=strData GetParamUrl('cat');//strData SetParamUrl('sotr', "strDataSort");// https://some.com/some_path?cat=strData&sotr=strDataSort GetParamUrl('sotr');//strDataSort SetParamUrl('cat', "strDataTwo");// https://some.com/some_path?cat=strDataTwo&sotr=strDataSort GetParamUrl('cat');//strDataTwo //remove param SetParamUrl('cat', null);// https://some.com/some_path?sotr=strDataSort 
 var MyApp = new Class(); MyApp.extend({ utility: { queryStringHelper: function (url) { var originalUrl = url; var newUrl = url; var finalUrl; var insertParam = function (key, value) { key = escape(key); value = escape(value); //The previous post had the substr strat from 1 in stead of 0!!! var kvp = newUrl.substr(0).split('&'); var i = kvp.length; var x; while (i--) { x = kvp[i].split('='); if (x[0] == key) { x[1] = value; kvp[i] = x.join('='); break; } } if (i < 0) { kvp[kvp.length] = [key, value].join('='); } finalUrl = kvp.join('&'); return finalUrl; }; this.insertParameterToQueryString = insertParam; this.insertParams = function (keyValues) { for (var keyValue in keyValues[0]) { var key = keyValue; var value = keyValues[0][keyValue]; newUrl = insertParam(key, value); } return newUrl; }; return this; } } });