如何使用JavaScript在PHP GET变量上运行if语句?

I found a nice little script on snippr(http://snipplr.com/view.php?codeview&id=799) that gives me the GET variables in an associative array.

// Read a page's GET URL variables and return them as an associative array.
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 get = getUrlVars(); 

I am trying to check to see if a certain GET variable is set and if the value is 'search'. For some reason my code is not catching the If statement and alerting even if the condition is not met.

if((get['search_housing']) = 'search') {
  alert('this works');
}

I'm not sure why it's not respecting my If statement. Is there something wrong with my code?

The = operator sets the value.

You're looking for ==, which compares values:

if((get['search_housing']) == 'search') {
  alert('this works');
}

if((get['search_housing']) == 'search') {

DOUBLE equals!

Maybe it needs to be this:

if((get['search_housing']) == 'search') {
    alert('this works');
}

See, the = would mean you are trying to assign 'search' to the get[].

Try gup instead. That code you found doesn't look very robust. You probably want to unescape the returned value because you are comparing the results.

if (gup('search_housing') == 'search') { ... }

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(get('search_housing')==='search'){
  alert('test');
}