Lasse Reichstein Nielsen <lrn@hotpop.com> writes:
> Her er en generel funktion til at håndtere search-delen af en url:
For fuldstændighed skal et lige siges at den ikke kan håndtere *alt*
der kan sendes fra en HTML-form. Sådanne search-strenge kan indeholde
ting som:
navn.x=42&navn.y=43
eller
navn=a&navn=b
En endnu mere generel funktion er:
---
function addToTable(table,nameArr,value,nameIdx) {
nameIdx = nameIdx || 0;
if (nameIdx == nameArr.length) { // place value here
if (typeof table == "undefined") { return value; }
if (typeof table == "string") { return new Array(table,value); }
table[table.length]=value;
return table;
}
var name = nameArr[nameIdx];
if (typeof table == "undefined") {
table = new Array();
}
table[name] = addToTable(table[name],nameArr,value,nameIdx+1);
return table;
}
function parseSearch(searchString) { // argument optional
searchString = searchString || location.search;
var lookupTable;
var search = searchString.substr(searchString.indexOf("?")+1);
search = search.replace(new RegExp("\\+","g")," ");
var assigns = search.split("&");
for (var i=0;i<assigns.length;i++) {
var parts = assigns[i].split("=");
var name = unescape(parts[0]);
var value = unescape(parts[1]);
var nameParts = name.split(".");
lookupTable = addToTable(lookupTable,nameParts,value);
}
return lookupTable;
}
---
Den laver flere værdier med samme navn om til et array (så
"?name=x&name=y" giver at parseSearch().name er arrayet ["x","y"]),
og hvis et navn indeholder et ".", så laver den et underobjekt,
så "?name.x=42&name.y=43" giver at fx (parseSearch().name.x == 42).
Så kan man så overveje hvornår man for brug for det, men mere generelt
kan det vist ikke blive :)
/L
--
Lasse Reichstein Nielsen - lrn@hotpop.com
DHTML Death Colors: <URL:
http://www.infimum.dk/HTML/rasterTriangleDOM.html>
'Faith without judgement merely degrades the spirit divine.'