当我使用window.location获取URL时,JavaScript执行停止

时间:2015-11-10 11:50:09

标签: javascript jquery

我正在构建一个在线商店作为练习的一部分,当我尝试访问当前URL的参数时,我遇到了问题。我的JavaScript代码是:

var link = getQueryVariable("q");
var minPrice = 0;
var maxPrice = 500;

function getQueryVariable(variable)
    {
           var query = window.location.search.substring(1);
           var vars = query.split("&");
           for (var i=0;i<vars.length;i++) {
                   var pair = vars[i].split("=");
                   if(pair[0] == variable){
                       return pair[1];
                    }
           }
           return(false);
    }
    function setPrices(callback){
        $.get("getPriceBounds.php?q=" + link, function(data){
            var results = JSON.parse(data);
            minPrice = results["min"];
            maxPrice = results["max"];  
            callback();
        },"text/javascript");
    }

我是否以错误的方式使用window.location,或者有其他方法可以在不停止执行的情况下访问URL?

谢谢

2 个答案:

答案 0 :(得分:1)

function getParameterByName(name) {
    name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
    results = regex.exec(location.search);
    return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

请改用它。如果您在页面 http://example.org/index.html?q=300 并执行:

var q = getParameterByName("q");
console.log(q);

然后将在您的控制台中打印300。

答案 1 :(得分:0)

使用window.location.search应该可以正常工作。

您可以尝试使用以下替代方法来获取查询参数,以防代码中存在不正确的内容。

&#13;
&#13;
var q = 'myParam';

var getParams = function(url) {
  return (window.location.search || url).slice(1).split('&')
    .reduce(function(a, b) {
      b = b.split('=');
      a[b[0]] = b[1];
      return a;
    }, {});
}

getParams(); //{}
getParams('?test=7&more=test'); //{test:7, more:'test'}
&#13;
&#13;
&#13;

注意:上面的代码不会在嵌入式代码片段运行器中运行,因为它没有窗口对象。