2014-03-22 2 views
0

Как я мог получить конкретно каждый из этих строк запроса вJavascript location.search

файла: /// K: /CKaing_C20_A01_Casino2/game.html First Name = + Testfirst & Последняя + Name = Testlast & pnum = 123-456-7890 & Postcode = A1A + 1A1 & startMoney = 5000

Например, я хочу, чтобы получить Testfirst, а затем присвоить его переменной, так что я могу использовать его в дальнейшем. То же самое с остальными.

Это то, что я до сих пор, чтобы удалить все +, =

var formData = location.search; 

formData = formData.substring(1, formData.length); 

while (formData.indexOf("+") != -1) { 
    formData = formData.replace("+", " "); 
} 

formData = unescape(formData); 
var formArray = formData.split("&"); 
for (var i=0; i < formArray.length; ++i) { 
    document.writeln(formArray[i] + "<br />"); 
} 

ответ

0

сочетание использования заменить Regex и функция сплит делает работу.

var str = "file:///K:/CKaing_C20_A01_Casino2/game.html? 
    First+Name=Testfirst&Last+Name=Testlast 
    &pnum=123-456-7890&postCode=A1A+1A1&startMoney=5000"; 

var argStrIndex = str.indexOf("?"); 
var argStr = str.substring(argStrIndex+1); 
var args = argStr.replace(/\+/g," ").split("&"); 

for (var i=0;i<args.length;i++){ 
    alert(args[i]); 
} 

демо: http://jsfiddle.net/7meAv/

0

что-то подобное:

var search = location.search 
    .replace(/^\?/,'') 
    .replace(/\+/g,' ') 
    .split('&') 
    .map(function(string){ 
     var split = string.split('='); 
     var res={}; 
     res[split[0]]=split[1]; 
     return res; 
}); 

должен вернуть

[{ "Имя": "Testfirst"}, { "Фамилия":» Testlast "}, {" pnum ":" 123-456-7890 "}, {" postCode ":" A1A 1A1 "}, {" startMoney ":" 5000 "}]"

Вы бы d, чтобы позаботиться о кодировке url.

0

Комбинация из двух ответов уже дано (jsfiddle: http://jsfiddle.net/russianator/GymEq/)

var url = 'file:///K:/CKaing_C20_A01_Casino2/game.html?First+Name=Testfirst&Last+Name=Testlast&pnum=123-456-7890&postCode=A1A+1A1&startMoney=5000'; 

queryObject = {}; 
url.substring(url.indexOf('?')+1) 
.replace(/\+/g,' ') 
.split('&') 
.forEach(function(item) { 
    splitItem = item.split('='); 
    queryObject[splitItem[0]] = splitItem[1]; 
}); 

Возвращает объект вроде этого:

{ 
    "First Name": "Testfirst", 
    "Last Name": "Testlast", 
    ... 
} 
+0

Я люблю вещи, превращая в объект, где вы можете в эталонных значениях поворота с помощью ключа, чтобы получить соответствующее значение. – TheRocketSurgeon

1
var splitSearch = JSON.parse("{\""+(location.search.substr(1).replace(/\=/g,"\"\:\"").replace(/\&|(\/\?)/g,"\", \""))+"\"}") 

я сделал, что один на веб-страницу, которая использует редкий («/?») разделитель.

http://example.com/?a=0&b=bee/?c=third

Сначала один будет работать для URL, как этот

Если вы хотите для обычного расположения:

var splitSearch = JSON.parse("{\""+(location.search.substr(1).replace(/\=/g,"\"\:\"").replace(/\&/g,"\", \""))+"\"}") 

После splitSearch определяется вы можете получить «pnum» строку, как это :

splitSearch.pnum 
splitSearch["pnum"] 


Другим способом получить его:

var splitSearch = JSON.parse("{\""+(location.search.substr(1).replace(/(\=)|(\&)|(\/\?)/g, function(k) { 
var rtn=k; 
if (k == "\=") rtn="\"\:\""; 
else if ((k == "\&") /*|| (k == "\/\?")*/) rtn="\",\""; 
return rtn; 
})+"\"}")) 
Смежные вопросы