2015-11-10 17 views
-1

我正在构建一个在线商店作为练习的一部分,并且当我尝试访问当前URL的参数时遇到问题。我的JavaScript代码是:当我使用window.location获取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在错误的道路或有另一种方式来访问的网址不回采的执行?

谢谢

+0

查看浏览器的JavaScript控制台。你在那里看到错误吗? – JJJ

+0

最有可能'window.location.search'是未定义的。 –

+0

我猜你正试图找出例如?v = 10&t = 1的价值? (所以PHP中$ _GET是什么) –

回答

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在控制台打印。

+0

谢谢。这终于奏效了 – ggeo

0

使用window.location.search应该工作绝对好。

您可以尝试下面的替代方法来获取查询参数,以防代码中存在不完全正确的情况。

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'}

NB:上述代码不会在嵌入代码段转轮运行,因为它不具有窗口对象。

相关问题