6

I am trying to get a url value using javascript, so far I can only get pure numbers, not mixed numbers with letters or just letters. I can't find any working examples of a function that allows for numbers with letters to be retrieved, just numbers. I am not using any non alphanumeric characters. An example value that I am trying to pass is "42p316041610751874cm83p2306600132141".

function getUrlVars()
{
var vars = [], hash;
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
for(var i = 0; i < hashes.length; i++)
{
    hash = hashes[i].split('=');
    vars.push(hash[0]);
    vars[hash[0]] = hash[1];
}
return vars;
}

 var first = getUrlVars()["test"];

Any help would be great. Thanks.

4
  • That's odd. Your code should work. Commented Dec 10, 2011 at 22:07
  • I tried it, and it works for me. I used this URL: http://localhost/test/index.html?test=42p316041610751874cm83p2306600132141. Commented Dec 10, 2011 at 22:14
  • I am using jQuery Mobile as the framework for the site if that matters? Commented Dec 10, 2011 at 23:16
  • Similar question? stackoverflow.com/questions/901115/… Commented Sep 24, 2013 at 8:32

4 Answers 4

6

Here is a condensed version of two of the answers above :

function gup (name) {
  name = RegExp ('[?&]' + name.replace (/([[\]])/, '\\$1') + '=([^&#]*)');
  return (window.location.href.match (name) || ['', ''])[1];
}

Easier to type, easier on processing and, IMHO easier to read. YMMV

Sign up to request clarification or add additional context in comments.

Comments

4

I use this function, and it rocks. I don't remember from where I took it, but it's a good one:

function gup(name) {
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);
    if (results == null)
        return "";
    else
        return results[1];
} 

If you have a URL like http://www.exmaple.com/path?p1=lkjsd234&p2=klsjd987, you can use:

alert(gup('p1')); // shows 'lkjsd234';

1 Comment

This is the one I use. The first place I saw it was stackoverflow.com/a/979997/1733377
0

Your code looks like it should work I use the function below if it helps

 function getParam(name){
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec (window.location.href);
    if (results == null)
        return "";
        else
        return results[1];  
}

var first = getParam("test");

Comments

0

Your approach should work. Here's my version for comparison:

var o = {
    keys: [ ],
   values: [ ]
}

/* 
You could just use the window#location#search value to get the query sub-String of the currently loaded URL

 var q = window.location.search.substring(1) ; 

For now we'll use a query String from a Google search for "MDN window location"
*/

q = "q=mdn+window+location&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:de:official&client=firefox-a"

for( var i = 0 , a = q.split("&"), p ; i < a.length ; i++ ) {
    p = a[i] ;
    if(  ( b = p.split("=") )  !=  null ) {
        o.keys[i] = b[0] ;
        o.values[i] = b[1] ;
    }
}


console.log("(!!) o: " + o.toSource( ) ) ;

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.