【问题标题】:How can I run an if statement on a PHP GET variable using JavaScript?如何使用 JavaScript 对 PHP GET 变量运行 if 语句?
【发布时间】:2012-01-29 06:12:55
【问题描述】:

我在 snippr(http://snipplr.com/view.php?codeview&id=799) 上找到了一个不错的小脚本,它为我提供了关联数组中的 GET 变量。

// 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(); 

我正在尝试检查是否设置了某个 GET 变量以及该值是否为“搜索”。由于某种原因,即使不满足条件,我的代码也没有捕获 If 语句并发出警报。

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

我不确定为什么它不尊重我的 If 语句。我的代码有问题吗?

【问题讨论】:

标签: php javascript get


【解决方案1】:

= 运算符设置值。

您正在寻找==比较值:

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

【讨论】:

    【解决方案2】:

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

    DOUBLE 等于!

    【讨论】:

      【解决方案3】:

      也许它需要是这样的:

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

      看,= 表示您正在尝试将“搜索”分配给 get[]。

      【讨论】:

        【解决方案4】:
        if(get('search_housing')==='search'){
          alert('test');
        }
        

        【讨论】:

          【解决方案5】:

          改用gup。您找到的代码看起来不是很健壮。您可能希望对返回的值进行转义,因为您正在比较结果。

          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];
          }
          

          【讨论】:

          • 没有 URL 解码的查询字符串解析器是健壮的。
          • @AtesGoral - 做了一个关于取消转义的注释,尽管我个人总是在值检索之外这样做,因为我想要编码的值。
          • 我可以看到你可能想要这样做的边缘情况,但一般来说,在你的解析器中不处理转义是违反层的。
          猜你喜欢
          • 1970-01-01
          • 2013-10-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多