2010-12-01 71 views
0

我想從這樣的URL www.internets.com?param=123456使用jQuery抓取URL參數並投入輸入

我有這樣的嘗試它抓住一個特定paramater ..

$j.extend({ 
    getUrlVars: function(){ 
    return window.location.href.slice(window.location.href.indexOf('?')).split(/[&?]{1}[\w\d]+=/); 
    } 
}); 
var allVars = $j.getUrlVars('param'); 

奇怪的是該變量在這個例子中,它看起來像返回一個逗號的話,123456

哪裏是來自未來?

回答

1

split返回一個子串的數組,所以逗號來自數組的序列化。

+0

哦好..謝謝。你知道寫這個的正確方法是什麼嗎? – Zac 2010-12-01 01:40:48

+0

給出你已經有的東西,最簡單的方法是將'[1]'加到最後(如果你想要第一個參數),例如`window.location.href.indexOf('?'))。split(/ [&?] {1} [\ w \ d] + =/[1]` – Emmett 2010-12-01 01:55:39

0

你要求JavaScript根據你的正則表達式中的規則將字符串拆分爲一個數組,所以字符串「?param = 123456」變成了一個數組,其中的所有內容都只是一個分隔符,所以它看到兩個鍵:一個空字符串和123456.編輯 - 你仍然可以使用分割,只是使用不同的分隔符。 indexOf告訴它在'?'的位置之後查看子字符串,所以如果你在'='上分割,它將提供一個數組,其中一個值是參數名稱(可能帶有'?'或'&' ,所以只是刪除它)和下一個值是在等號後發送的值。

您也可以在深度多一點你的正則表達式和處理,像這樣:

var q = window.location.search; // returns everything after '?' 
var regEx = /[^?& =]([\w]*)[^!?& =]/g; 
var array = q.match(regEx); 
var vars = new Array(); 
for (var i = 0; i < array.length; i++) { 
    if ((i % 2) == 0) { 
     vars[array[i]] = array[i + 1]; 
    } 
} 

這將留下一個數組,其中的鍵是帕拉姆名稱和它們的值的相關值來自查詢字符串。

+0

謝謝..我應該用什麼來代替split ? – Zac 2010-12-01 01:41:15