2015-11-10 62 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:上述代碼不會在嵌入代碼段轉輪運行,因爲它不具有窗口對象。

相關問題