Monday, May 20, 2024
 Popular · Latest · Hot · Upcoming
40
rated 0 times [  45] [ 5]  / answers: 1 / hits: 62649  / 13 Years ago, fri, august 5, 2011, 12:00:00

I'm wondering how I can add a new parameter to an existing url.
The problem is: the url may also contain an anchor.



For example:



http://www.example.com?foo=bar#hashme


And I want to add another parameter to it, so it results in this:



http://www.example.com?foo=bar&x=y#hashme

More From » javascript

 Answers
60

I used parts of The Awesome One's solution, and a solution found on this question:



Adding a parameter to the URL with JavaScript



Combining them into this script:



function addParameter(url, parameterName, parameterValue, atStart/*Add param before others*/){
replaceDuplicates = true;
if(url.indexOf('#') > 0){
var cl = url.indexOf('#');
urlhash = url.substring(url.indexOf('#'),url.length);
} else {
urlhash = '';
cl = url.length;
}
sourceUrl = url.substring(0,cl);

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]?parameterParts[1]:'');
}
}
}
if (newQueryString == )
newQueryString = ?;

if(atStart){
newQueryString = '?'+ parameterName + = + parameterValue + (newQueryString.length>1?'&'+newQueryString.substring(1):'');
} else {
if (newQueryString !== && newQueryString != '?')
newQueryString += &;
newQueryString += parameterName + = + (parameterValue?parameterValue:'');
}
return urlParts[0] + newQueryString + urlhash;
};


Example: addParameter('http://www.example.com?foo=bar#hashme', 'bla', 'valuebla', false)



Results in http://www.example.com?foo=bar&bla=valuebla#hashme


[#90803] Thursday, August 4, 2011, 13 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
marques

Total Points: 366
Total Questions: 108
Total Answers: 111

Location: Burundi
Member since Wed, Nov 25, 2020
4 Years ago
;