2011-06-25 51 views
6

我需要使用參數作爲字符串檢索整個URL。例如,我需要檢索以下網址:如何檢索帶參數的整個URL?

http://www.keytometals.com/page.aspx?ID=CheckArticle&site=kts&LN=EN&NM=349 

我試着使用:

document.location.href, 
document.URL, 
window.location.href 

,但它只是檢索URL的一部分:

http://www.keytometals.com/page.aspx 

如何獲取包含當前URL的字符串以及其參數?

一個更新:我已經使用了

window.content.document.location.href 

,我已經得到了以下網址:

http://www.keytometals.com/page.aspx?ID=CheckArticle 

不幸的是,它仍然是URL的一部分。有人可以幫助我如何獲得整個URL作爲一個字符串?

謝謝!

+0

關於什麼的只是'window.location'? –

+0

window.location.href適合我。 –

+0

不幸的是,也沒有window.location,window.location.href都不適合我。我已經在http://www.w3schools.com/js/tryit.asp?filename=tryjs_write嘗試過在線Javascript編輯器,編寫document.write(window.location.href),但結果是:http:/ /www.w3schools.com/js/tryit.asp – sonjafon

回答

3

您只需要簡單的document.location - 這將包括一切。你需要編寫你自己的代碼來分割它?只獲取查詢字符串,然後將其拆分爲每個&的名稱/值對。

編輯:

其實,你可以使用location.search爲好。這裏有一個片斷,我寫這個:

function loadQueryString(){ 
    var parameters = {}; 
    var searchString = location.search.substr(1); 
    var pairs = searchString.split("&"); 
    var parts; 
    for(i = 0; i < pairs.length; i++){ 
     parts = pairs[i].split("="); 
     var name = parts[0]; 
     var data = decodeURI(parts[1]); 
     parameters[name] = data; 
    } 
    return parameters; 
} 

params = loadQueryString(); 
+1

爲什麼'eval()'?支架符號是你的朋友:) – alex

+0

@alex:你爲什麼不自己修復它? :) – Crozin

+0

嗯。那麼,我想當我最初寫它時,我沒有完全理解數組和對象在JS中基本相同的事實。所以是的,支架工作得很好。 –

2

您應該使用window.location.href整個URL(包括查詢字符串)。

查看Mozilla's documentation瞭解更多信息和其他屬性。

這是關於如何Parse query string in JavaScript另一個很好的StackOverflow後。

+0

不幸的是,它不起作用。例如,當我嘗試通過使用http://www.w3schools.com/js/tryit.asp?filename=tryjs_write中的document.write(window.location.href)來檢索URL時,我只有http: //www.w3schools.com/js/tryit.asp。只需提一下,我使用的是Mozilla Firefox 4.0。 – sonjafon

0
function getQueryString() { 
    var key = false, res = {}, itm = null; 
    // get the query string without the ? 
    var qs = location.search.substring(1); 
    // check for the key as an argument 
    if (arguments.length > 0 && arguments[0].length > 1) 
    key = arguments[0]; 
    // make a regex pattern to grab key/value 
    var pattern = /([^&=]+)=([^&]*)/g; 
    // loop the items in the query string, either 
    // find a match to the argument, or build an object 
    // with key/value pairs 
    while (itm = pattern.exec(qs)) { 
    if (key !== false && decodeURIComponent(itm[1]) === key) 
     return decodeURIComponent(itm[2]); 
    else if (key === false) 
     res[decodeURIComponent(itm[1])] = decodeURIComponent(itm[2]); 
    } 

    return key === false ? res : null; 
} 

然後你使用這樣的:

// get a single key (if it exists) 
var t = getQueryString('site'); 
console.log(t); 

// get the whole thing as an object 
t = getQueryString(); 
console.log(t); 
+1

請問,請告訴我如何以字符串的形式檢索此對象?當我嘗試使用document.write(t)寫入時,它只是寫入「object Object」... – sonjafon

+0

不能將對象寫爲字符串,但可以將對象的屬性寫爲字符串。使用上面的第二個例子(將整個事物作爲一個對象),如果你想將'site'鍵寫入文檔,它將是'document.write(t.site)'。 –