1

I'm trying to write a Javascript function to get the query string of the browser and allow a new key/value to be passed to the function. If the key exists, I need to replace the value. Since I've spent the last 3.5 hours on this, I haven't yet gotten around to the replacing part.

So far, I'm using the answer here: How to get the query string by javascript? to get the query string. However, it doesn't appear to work... The URL I was testing with was: http://www.site.com/poo?drwho=tombaker&companion=k9

  var assoc  = {}; 
  var decode = function (s) { return decodeURIComponent(s.replace(/\+/g, " ")); }; 
  var queryString = location.search.substring(1);  
  var keyValues = queryString.split('&');  

  for(var i in keyValues) {  
     var key = keyValues[i].split('=');  
     assoc[decode(key[0])] = decode(key[1]);  
  }  

  if(assoc["dr"] === undefined ) { 
     // not found. todo: replace
  } 

I'd really appricate any help! Is there any simpler way of doing this using JQuery?

Community
  • 1
  • 1
Alex Guerin
  • 2,336
  • 10
  • 36
  • 53

2 Answers2

2

Copy and pasted your code here: http://jsfiddle.net/6KcWh/5/, and added a call to JSON.stringify() to examine the contents of assoc. It turns out assoc is not undefined. But, of course assoc.dr is undefined, because there is no querystring argument of dr. There is a querystring argument of drwho. It looks like you were looking for the wrong querystring argument.

gilly3
  • 87,962
  • 25
  • 144
  • 176
1

You appear to be misusing for...in.

Try converting your for loop to a standard for (i = 0 ; i < keyValues.length; i++) and check out some other answers about what for...in is used for in JavaScript.

Community
  • 1
  • 1
Ken Browning
  • 28,693
  • 6
  • 56
  • 68