Getting a GET variable with JavaScript

thirtythree

Diamond Member
Aug 7, 2001
8,680
3
0
I'm trying to set a form field to the value of a GET variable (if set) called destination:

function destinationFunction() {
var searchString = document.location.search.split("destination=");
var searchSplit = searchString[1].split("&");
document.getElementById('destination').value = searchSplit[0];
}

This function works fine when destination is set in the URL but "crashes" when it isn't (which is fine, since I don't need it to do anything in that case). I'm sort of a JavaScript noob, so I was wondering if it's a bad idea to do it this way even though the end result is correct. I believe it crashes because searchString[1] doesn't exist when destination isn't set in the URL. Also in the first line, I'm splitting a string that may not exist, and even if it does exist, it may not have "destination=" in it. Is it okay to do this? Obviously I could throw a bunch of conditionals in, but is it even worth worrying about?

Thanks ;)
 

Woosta

Platinum Member
Mar 23, 2008
2,978
0
71
http://paste.zoffix.com/121225...e=four&destination=lol

You should just check for the existence of the element (searchString[1] and searchSplit[0] in this case) - so if either of them do not exist, using the return statement you'll quit the function and no exceptions are thrown.

We could wrap the logic like so..

if (searchString[1]) {
// do something
}

But that forces us to keep indenting and personally I don't like that. So instead:

if (!searchString[1]) { return; }

Use the negation operator so that if it doesnt exist, use return to exit the function.
 

thirtythree

Diamond Member
Aug 7, 2001
8,680
3
0
Originally posted by: Woosta
http://paste.zoffix.com/121225...e=four&destination=lol

You should just check for the existence of the element (searchString[1] and searchSplit[0] in this case) - so if either of them do not exist, using the return statement you'll quit the function and no exceptions are thrown.

We could wrap the logic like so..

if (searchString[1]) {
// do something
}

But that forces us to keep indenting and personally I don't like that. So instead:

if (!searchString[1]) { return; }

Use the negation operator so that if it doesnt exist, use return to exit the function.

Well, easy enough :beer: I don't think I actually need to check for searchSplit[0], 'cause split always creates at least the first item in the array. It doesn't give any JS errors in Safari if I leave it out anyway. Thanks!
 

TeamZero

Senior member
Apr 14, 2004
519
0
0
If it's an option, just use a server side language to write the value of the variable into your javascript.

Change file extension to .asp pr .php whichever is supported and put <%= Request.QueryString("variableName") %> or <?= $_GET['variableName'] ?> in your script respectively.


That said, this post is assuming alot of things, so just ignore it if it's totally wrong :p
 

troytime

Golden Member
Jan 3, 2006
1,996
1
0
Originally posted by: TeamZero
If it's an option, just use a server side language to write the value of the variable into your javascript.

Change file extension to .asp pr .php whichever is supported and put <%= Request.QueryString("variableName") %> or <?= $_GET['variableName'] ?> in your script respectively.


That said, this post is assuming alot of things, so just ignore it if it's totally wrong :p

thats what i'd do :)

don't forget to scrub those variables first though