दिलचस्प पोस्ट
बटन के साथ नई प्रविष्टि जोड़ने के लिए डायनामिक तालिका बनाएं एक सूची के उत्पाद को लौटाना snprintf और विजुअल स्टूडियो 2010 कोड में स्विच को खत्म करने के तरीके कैसे WebLogic में जार का आदेश सेट करने के लिए? दो सूचियों के बीच संयोजन? 'WebForm_DoPostBackWithOptions' IE11 पूर्वावलोकन में अनिर्धारित है जावा ईई 6> पैकेजिंग जेएसएफ फेसलेट्स (एक्सएचटीएमएल) और जेनर के रूप में प्रबंधितबैंस एंड्रॉइड: अदृश्य और चले गए बीच का अंतर? JavaServer 2.2 और एचटीएमएलएक्स का समर्थन करता है, एक्सएचटीएचएल का उपयोग क्यों किया जा रहा है जावा में आकार n के सेट से कश्मीर तत्वों को कमजोर करने के लिए कैसे करें? कोई भी प्रोग्रामिंग में सबसे मुश्किल भागों में से एक वर्गों और विधियों का नामकरण खोज रहा है? पायथन (विंडोज़) – आयातईटर: साइट का कोई मॉड्यूल नहीं है XML_LOAD () का उपयोग करके MySQL डेटाबेस तालिका में XML फ़ाइल कैसे आयात करें? समारोह एंड्रॉइड बाएं से दाएं स्लाइड एनीमेशन

URL पैरामीटर बदलें

मेरे पास यह यूआरएल है:

site.fwx?position=1&archiveid=5000&columns=5&rows=20&sorting=ModifiedTimeAsc 

मुझे जो कुछ चाहिए वह 'पंक्तियाँ' यूआरएल परम मूल्य को मैं जो कुछ निर्दिष्ट करता हूं, उसे बदलने में सक्षम होने की जरूरत है, यह कहना है कि 10 कहते हैं। और यदि 'पंक्तियाँ' मौजूद नहीं हैं, तो मुझे इसे यूआरएल के अंत में जोड़ना होगा मान मैंने पहले से निर्दिष्ट किया है (10)।

वेब के समाधान से एकत्रित समाधान "URL पैरामीटर बदलें"

मुझे लगता है कि आप क्वेरी प्लगइन चाहते हैं

उदाहरण के लिए:

 window.location.search = jQuery.query.set("rows", 10); 

मौजूदा पंक्तियों की वर्तमान स्थिति के बावजूद यह काम करेगा।

मैंने एक फ़ंक्शन बनाने के लिए सुजॉय का कोड बढ़ाया है।

 /** * http://stackoverflow.com/a/10997390/11236 */ function updateURLParameter(url, param, paramVal){ var newAdditionalURL = ""; var tempArray = url.split("?"); var baseURL = tempArray[0]; var additionalURL = tempArray[1]; var temp = ""; if (additionalURL) { tempArray = additionalURL.split("&"); for (var i=0; i<tempArray.length; i++){ if(tempArray[i].split('=')[0] != param){ newAdditionalURL += temp + tempArray[i]; temp = "&"; } } } var rows_txt = temp + "" + param + "=" + paramVal; return baseURL + "?" + newAdditionalURL + rows_txt; } 

समारोह कॉल:

 var newURL = updateURLParameter(window.location.href, 'locId', 'newLoc'); newURL = updateURLParameter(newURL, 'resId', 'newResId'); window.history.replaceState('', '', updateURLParameter(window.location.href, "param", "value")); 

नवीनीकृत संस्करण जो यूआरएल पर एंकर का ध्यान रखता है।

 function updateURLParameter(url, param, paramVal) { var TheAnchor = null; var newAdditionalURL = ""; var tempArray = url.split("?"); var baseURL = tempArray[0]; var additionalURL = tempArray[1]; var temp = ""; if (additionalURL) { var tmpAnchor = additionalURL.split("#"); var TheParams = tmpAnchor[0]; TheAnchor = tmpAnchor[1]; if(TheAnchor) additionalURL = TheParams; tempArray = additionalURL.split("&"); for (var i=0; i<tempArray.length; i++) { if(tempArray[i].split('=')[0] != param) { newAdditionalURL += temp + tempArray[i]; temp = "&"; } } } else { var tmpAnchor = baseURL.split("#"); var TheParams = tmpAnchor[0]; TheAnchor = tmpAnchor[1]; if(TheParams) baseURL = TheParams; } if(TheAnchor) paramVal += "#" + TheAnchor; var rows_txt = temp + "" + param + "=" + paramVal; return baseURL + "?" + newAdditionalURL + rows_txt; } 

बेन अल्मैन के पास एक अच्छी jquery querystring / url प्लगइन है जो आपको आसानी से क्वेरीस्ट्रिंग को हेरफेर करने की अनुमति देता है

के रूप में अनुरोध किया –

गोटो अपने परीक्षण पृष्ठ यहां

फ़ायरबग में कंसोल में निम्न दर्ज करें

jQuery.param.querystring(window.location.href, 'a=3&newValue=100');

यह आपको निम्न संशोधन यूआरएल स्ट्रिंग लौटाएगा

http://benalman.com/code/test/js-jquery-url-querystring.html?a=3&b=Y&c=Z&newValue=100#n=1&o=2&p=3

ध्यान दें कि क्वेरी के लिए कोई क्वेरी स्ट्रिंग X से 3 में बदल गया है और इसमें नया मान जोड़ा गया है।

फिर आप नई यूआरएल स्ट्रिंग का उपयोग कर सकते हैं, जैसे आप दस्तावेज़ का उपयोग करना चाहते हैं। Location = newUrl या एंकर लिंक आदि बदलें

4 साल बाद मेरे अपने प्रश्न का उत्तर देने के बाद, बहुत कुछ सीखने के बाद। विशेष रूप से आप सभी के लिए jQuery का उपयोग नहीं करना चाहिए। मैंने एक साधारण मॉड्यूल बनाया है जो क्वेरी स्ट्रिंग को पार्स / स्ट्रिप कर सकता है। यह क्वेरी स्ट्रिंग को संशोधित करना आसान बनाता है।

आप निम्नानुसार क्वेरी स्ट्रिंग का उपयोग कर सकते हैं:

 // parse the query string into an object var q = queryString.parse(location.search); // set the `row` property q.rows = 10; // convert the object to a query string // and overwrite the existing query string location.search = queryString.stringify(q); 

शुद्ध जेएस में त्वरित थोड़ा समाधान, कोई प्लगइन्स की आवश्यकता नहीं है:

 function replaceQueryParam(param, newval, search) { var regex = new RegExp("([?;&])" + param + "[^&;]*[;&]?"); var query = search.replace(regex, "$1").replace(/&$/, ''); return (query.length > 2 ? query + "&" : "?") + (newval ? param + "=" + newval : ''); } 

इसे इस तरह कॉल करें:

  window.location = '/mypage' + replaceQueryParam('rows', 55, window.location.search) 

या, यदि आप एक ही पृष्ठ पर बने रहना चाहते हैं और कई पैरामीटर बदलते हैं:

  var str = window.location.search str = replaceQueryParam('rows', 55, str) str = replaceQueryParam('cols', 'no', str) window.location = window.location.pathname + str 

संपादित करें, धन्यवाद ल्यूक: पैरामीटर को पूरी तरह से हटाने के लिए, मान के लिए false या null पास करें: replaceQueryParam('rows', false, params) । चूंकि 0 भी गलत है , इसलिए '0' निर्दिष्ट करें

आप इसे सामान्य जेएस के द्वारा भी कर सकते हैं

 var url = document.URL var newAdditionalURL = ""; var tempArray = url.split("?"); var baseURL = tempArray[0]; var aditionalURL = tempArray[1]; var temp = ""; if(aditionalURL) { var tempArray = aditionalURL.split("&"); for ( var i in tempArray ){ if(tempArray[i].indexOf("rows") == -1){ newAdditionalURL += temp+tempArray[i]; temp = "&"; } } } var rows_txt = temp+"rows=10"; var finalURL = baseURL+"?"+newAdditionalURL+rows_txt; 

इसका एक आधुनिक दृष्टिकोण मूल मानक आधारित यूआरएल सर्चपरम का उपयोग करना है। पुराने ब्राउज़र के लिए पॉलीफाइल उपलब्ध हैं

 const paramsString = "site.fwx?position=1&archiveid=5000&columns=5&rows=20&sorting=ModifiedTimeAsc" const searchParams = new URLSearchParams(paramsString); searchParams.set('rows', 10); 

स्ट्रिंग हेरफेर के लिए एक व्यवहार्य विकल्प क्या एचटीएमएल form को सेट form और बस rows तत्व को संशोधित करेगा?

तो, html साथ ऐसा कुछ है

 <form id='myForm' target='site.fwx'> <input type='hidden' name='position' value='1'/> <input type='hidden' name='archiveid' value='5000'/> <input type='hidden' name='columns' value='5'/> <input type='hidden' name='rows' value='20'/> <input type='hidden' name='sorting' value='ModifiedTimeAsc'/> </form> 

फ़ॉर्म सबमिट करने के लिए निम्नलिखित जावास्क्रिप्ट के साथ

 var myForm = document.getElementById('myForm'); myForm.rows.value = yourNewValue; myForm.submit(); 

शायद सभी स्थितियों के लिए उपयुक्त नहीं है, लेकिन यूआरएल स्ट्रिंग को पार्स करने से बेहतर हो सकता है।

आप यह काम करने के लिए मेरी लाइब्रेरी का उपयोग कर सकते हैं: https://github.com/Mikhus/jsurl

 var url = new Url('site.fwx?position=1&archiveid=5000&columns=5&rows=20&sorting=ModifiedTimeAsc'); url.query.rows = 10; alert( url); 

मैंने एक छोटी सी सहायक फ़ंक्शन लिखा था जो किसी भी चयन के साथ काम करता है आपको बस किसी भी तत्व को "रीडायडऑन चेंज" वर्ग जोड़ना है, और यह पेज को एक नया / बदले गए क्वेरीस्ट्रिंग पैरामीटर के साथ पुनः लोड करने के लिए कारण होगा, चयन के आईडी और मान के बराबर, जैसे:

 <select id="myValue" class="redirectOnChange"> <option value="222">test222</option> <option value="333">test333</option> </select> 

उपरोक्त उदाहरण "? MyValue = 222" या "? MyValue = 333" (या अन्य पैरामीटर मौजूद होने पर "और" का उपयोग करके) जोड़ देगा और पृष्ठ को पुनः लोड कर देगा।

jQuery:

 $(document).ready(function () { //Redirect on Change $(".redirectOnChange").change(function () { var href = window.location.href.substring(0, window.location.href.indexOf('?')); var qs = window.location.href.substring(window.location.href.indexOf('?') + 1, window.location.href.length); var newParam = $(this).attr("id") + '=' + $(this).val(); if (qs.indexOf($(this).attr("id") + '=') == -1) { if (qs == '') { qs = '?' } else { qs = qs + '&' } qs = qs + newParam; } else { var start = qs.indexOf($(this).attr("id") + "="); var end = qs.indexOf("&", start); if (end == -1) { end = qs.length; } var curParam = qs.substring(start, end); qs = qs.replace(curParam, newParam); } window.location.replace(href + '?' + qs); }); }); 

यहां मैंने आदिल मलिक के उत्तर ले लिया है और मैंने उन तीन मुद्दों को तय किया है जिन्हें मैंने इसकी पहचान की थी।

 /** * Adds or updates a URL parameter. * * @param {string} url the URL to modify * @param {string} param the name of the parameter * @param {string} paramVal the new value for the parameter * @return {string} the updated URL */ self.setParameter = function (url, param, paramVal){ // http://stackoverflow.com/a/10997390/2391566 var parts = url.split('?'); var baseUrl = parts[0]; var oldQueryString = parts[1]; var newParameters = []; if (oldQueryString) { var oldParameters = oldQueryString.split('&'); for (var i = 0; i < oldParameters.length; i++) { if(oldParameters[i].split('=')[0] != param) { newParameters.push(oldParameters[i]); } } } if (paramVal !== '' && paramVal !== null && typeof paramVal !== 'undefined') { newParameters.push(param + '=' + encodeURI(paramVal)); } if (newParameters.length > 0) { return baseUrl + '?' + newParameters.join('&'); } else { return baseUrl; } } 

सुजॉय के उत्तर पर एक और बदलाव। बस वेरिएबल नाम बदल दिए हैं और एक नेमस्पेस आवरण जोड़ा है:

 window.MyNamespace = window.MyNamespace || {}; window.MyNamespace.Uri = window.MyNamespace.Uri || {}; (function (ns) { ns.SetQueryStringParameter = function(url, parameterName, parameterValue) { var otherQueryStringParameters = ""; var urlParts = url.split("?"); var baseUrl = urlParts[0]; var queryString = urlParts[1]; var itemSeparator = ""; if (queryString) { var queryStringParts = queryString.split("&"); for (var i = 0; i < queryStringParts.length; i++){ if(queryStringParts[i].split('=')[0] != parameterName){ otherQueryStringParameters += itemSeparator + queryStringParts[i]; itemSeparator = "&"; } } } var newQueryStringParameter = itemSeparator + parameterName + "=" + parameterValue; return baseUrl + "?" + otherQueryStringParameters + newQueryStringParameter; }; })(window.MyNamespace.Uri); 

उपयोग अब है:

 var changedUrl = MyNamespace.Uri.SetQueryStringParameter(originalUrl, "CarType", "Ford"); 

मैंने जावास्क्रिप्ट में यूआरएल क्वेरी पैरामीटर प्राप्त करने और स्थापित करने के लिए एक पुस्तकालय भी लिखा है I

यहां इसका उपयोग का एक उदाहरण है

 var url = Qurl.create() , query , foo ; 

किसी ऑब्जेक्ट के रूप में, कुंजी के द्वारा क्वेरी पैरामीटर प्राप्त करें, या जोड़ें / बदलें / निकालें।

 // returns { foo: 'bar', baz: 'qux' } for ?foo=bar&baz=qux query = url.query(); // get the current value of foo foo = url.query('foo'); // set ?foo=bar&baz=qux url.query('foo', 'bar'); url.query('baz', 'qux'); // unset foo, leaving ?baz=qux url.query('foo', false); // unsets foo 

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

 window.history.replaceState('object or string', 'Title', 'page.html' + editParams('sorting', ModifiedTimeAsc)); // 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; } 

मैं एक ही चीज़ की तलाश में था और पाया: https://github.com/medialize/URI.js जो काफी अच्छा है 🙂

— अद्यतन करें

मुझे एक बेहतर पैकेज मिला: https://www.npmjs.org/package/qs यह मिलते-जुलते पैरामारे में एरे के साथ भी काम करता है।