33
A
回答
47
function parseURLParams(url) {
var queryStart = url.indexOf("?") + 1,
queryEnd = url.indexOf("#") + 1 || url.length + 1,
query = url.slice(queryStart, queryEnd - 1),
pairs = query.replace(/\+/g, " ").split("&"),
parms = {}, i, n, v, nv;
if (query === url || query === "") return;
for (i = 0; i < pairs.length; i++) {
nv = pairs[i].split("=", 2);
n = decodeURIComponent(nv[0]);
v = decodeURIComponent(nv[1]);
if (!parms.hasOwnProperty(n)) parms[n] = [];
parms[n].push(nv.length === 2 ? v : null);
}
return parms;
}
使用方法如下:
var urlString = "http://www.foo.com/bar?a=a+a&b%20b=b&c=1&c=2&d#hash";
urlParams = parseURLParams(urlString);
返回一個對象是這樣的:
{
"a" : ["a a"], /* param values are always returned as arrays */
"b b": ["b"], /* param names can have special chars as well */
"c" : ["1", "2"] /* an URL param can occur multiple times! */
"d" : [null] /* parameters without values are set to null */
}
所以
parseURLParams("www.mints.com?name=something")
給
{name: ["something"]}
編輯:該original version of this answer使用基於正則表達式的方法來URL的解析。它使用了一個較短的函數,但方法有缺陷,我用適當的解析器替換了它。
3
location.search https://developer.mozilla.org/en/DOM/window.location
雖然大多數使用某種分析例程來讀取查詢字符串參數。
這裏有一個http://safalra.com/web-design/javascript/parsing-query-strings/
3
這裏有一個解決方案。當然,這個函數不需要加載到「window.params」選項 - 可以自定義。在http://www.mints.com/myurl.html?name=something&goal=true
window.params = function(){
var params = {};
var param_array = window.location.href.split('?')[1].split('&');
for(var i in param_array){
x = param_array[i].split('=');
params[x[0]] = x[1];
}
return params;
}();
API呼叫範例:
5
我想這也應該工作:
function $_GET(q,s) {
s = (s) ? s : window.location.search;
var re = new RegExp('&'+q+'=([^&]*)','i');
return (s=s.replace(/^\?/,'&').match(re)) ?s=s[1] :s='';
}
就這樣稱呼它:
var value = $_GET('myvariable');
1
Iv'e固定/改進Tomalak的答案與:
- 僅在需要時才創建數組。
- 如果值中有另一個方程式符號,則其值爲
- 它現在使用
location.search
值代替網址。 - 空的搜索字符串會導致一個空對象。
代碼:
function getSearchObject() {
if (location.search === "") return {};
var o = {},
nvPairs = location.search.substr(1).replace(/\+/g, " ").split("&");
nvPairs.forEach(function (pair) {
var e = pair.indexOf('=');
var n = decodeURIComponent(e < 0 ? pair : pair.substr(0,e)),
v = (e < 0 || e + 1 == pair.length)
? null :
decodeURIComponent(pair.substr(e + 1,pair.length - e));
if (!(n in o))
o[n] = v;
else if (o[n] instanceof Array)
o[n].push(v);
else
o[n] = [o[n] , v];
});
return o;
}
0
我也瘋了一個相當簡單的功能。 您可以通過以下方式聯繫它: get(「yourgetname」);
並得到任何東西。 (現在我寫的,我注意到它會給你26%,如果你在你的價值有一個& ..)
function get(name){
var url = window.location.search;
var num = url.search(name);
var namel = name.length;
var frontlength = namel+num+1; //length of everything before the value
var front = url.substring(0, frontlength);
url = url.replace(front, "");
num = url.search("&");
if(num>=0) return url.substr(0,num);
if(num<0) return url;
}
1
當前選擇的答案一點都沒有在我的情況很好地工作,這是我覺得是一個相當典型的。我發現下面的功能here,它工作的很棒!
function getAllUrlParams(url) {
// get query string from url (optional) or window
var queryString = url ? url.split('?')[1] : window.location.search.slice(1);
// we'll store the parameters here
var obj = {};
// if query string exists
if (queryString) {
// stuff after # is not part of query string, so get rid of it
queryString = queryString.split('#')[0];
// split our query string into its component parts
var arr = queryString.split('&');
for (var i=0; i<arr.length; i++) {
// separate the keys and the values
var a = arr[i].split('=');
// in case params look like: list[]=thing1&list[]=thing2
var paramNum = undefined;
var paramName = a[0].replace(/\[\d*\]/, function(v) {
paramNum = v.slice(1,-1);
return '';
});
// set parameter value (use 'true' if empty)
var paramValue = typeof(a[1])==='undefined' ? true : a[1];
// (optional) keep case consistent
paramName = paramName.toLowerCase();
paramValue = paramValue.toLowerCase();
// if parameter name already exists
if (obj[paramName]) {
// convert value to array (if still string)
if (typeof obj[paramName] === 'string') {
obj[paramName] = [obj[paramName]];
}
// if no array index number specified...
if (typeof paramNum === 'undefined') {
// put the value on the end of the array
obj[paramName].push(paramValue);
}
// if array index number specified...
else {
// put the value at that index number
obj[paramName][paramNum] = paramValue;
}
}
// if param name doesn't exist yet, set it
else {
obj[paramName] = paramValue;
}
}
}
return obj;
}
相關問題
- 1. 從Javascript中的BLOB URL讀取數據
- 2. 如何通過javascript從url中讀取GET元素?
- 3. 如何從url中讀取JSON數據
- 4. 如何從Javascript中的URL中提取GET參數?
- 5. 如何使用Python和MongoDB從隨機URL中讀取數據?
- 6. 如何使用JavaScript從URL中提取元數據?
- 7. 如何使用javaScript從url中讀取txt文件?
- 8. 使用JS/Jquery從URL中取出GET數據
- 9. 在javascript中讀取數據從數組中讀取數據
- 10. 如何使用vb.NET從URL讀取XML數據並保存
- 11. 如何從JavaScript讀取png元數據?
- 12. 使用Spark中的Get命令從Hbase讀取數據
- 13. Angular/javascript:從GET中讀取值
- 14. 用JavaScript從iframe中讀取數據
- 15. 從javascript用戶輸入url中提取GET參數
- 16. 從URL/Windows Phone中讀取數據
- 17. 從javascript讀取數據表
- 18. Javascript從URL讀取JSON
- 19. 如何使用JavaScript從GridView獲取URL?
- 20. 如何使用JavaScript從URL獲取JSON?
- 21. 如何從JavaScript/jQuery中讀取GET變量?
- 22. JavaScript的讀取BLOB數據的URL
- 23. 如何用javascript讀取標題數據
- 24. 如何從javascript函數中讀取值?
- 25. 從Javascript中的URL獲取JSON數據
- 26. 如何使用JavaScript從數據庫/模型中獲取數據
- 27. 如何使用javascript從mysql數據庫中獲取數據?
- 28. 如何從URL中隱藏GET參數
- 29. 如何從Android中的URL讀取json數據
- 30. 如何從URL中讀取圖像元數據?
我的歉意,我不是專業javascripter! :) – 2012-01-17 07:14:30
@Tomalak你能告訴我打印名字的價值嗎? 我想使用這個腳本,當我使用document.write(urlParams); 它給我[對象對象] 但我沒有得到實際的價值.. 你能幫我這個嗎? – 2013-06-27 21:33:52