2016-08-02 2 views
2

Мне нужно получить строковые строки запроса по их именам.Получить параметры строки запроса, включая все символы с помощью javascript

Мои параметры включают все символы, включая знаки «=».

Вот пример:

http://MyProject/ResetPassword?userid=12489e2ss125-f031-4ef7d-95c9-80e894efc6a0&code=Ippr7HP/Fad2q3kKMehQtVYnbFcZp+h4ECS+RCQmN+KrcAM8N4tdeNciNEXlwkhnjF3tZgez1/a1Ca1018uXpodGEnPcyTjsfuSmyuS1hoRXY04wKLgiyW031aLAYmua8yXLDdghgjo+0s7SUD7LWFMapMP8b3eN//ycbe1QNm6RVc7ahMs77ng6i6p6MScBefU/Rnj5ME7ly7tqw==

Я попробовал, что:

function getParameterByName(name) { 
var match = RegExp('[?&]' + name + '=([^&]*)').exec(window.location.search); 
return match && decodeURIComponent(match[1].replace(/\+/g, ' ')); 
} 

Но это заменяет '+' знаки с пробелами:

"Code":"Ippr7HP/Fad2q3kKMehQtVYnbFcZp h4ECS RCQmN KrcAM8N4tdeNciNEXlwkhnjF3tZgez1/a1Ca1018uXpodGEnPcyTJzsupjsfuSmyuS1hoRXY04wKLgiyW031aLAYmua8yXLDdghgjo 0s7SUD7LWFMapMP8b3eN//ycbe1QNm6RVc7ahMs77ng6i6p6MScBefU/Rnj5ME7ly7tqw==

Я попробовал, что:

function getParameterByName(key) { 
var vars = [], hash; 
var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&'); 
for (var i = 0; i < hashes.length; i++) { 
    hash = hashes[i].split('='); 
    vars.push(hash[0]); 
    vars[hash[0]] = hash[1]; 
} 
return vars[key]; 
} 

Но это не включает знаки «=» ...

Любой совет?

+0

Так ... в основном ... строка запроса неправильно сформирована. Как насчет исправления того, что генерирует его, а не пытаться взломать ошибки? – Quentin

+0

@Quentin Это то, как идентификатор asp.net генерирует код для сброса пароля, я не писал его самостоятельно и не хочу пытаться изменить свою систему. – user3378165

ответ

1

Ваша вторая попытка достаточно близко, вы просто должны присоединиться назад части стоимости после .split('=')

function getParameterByName(parameterName) { 
    var query = window.location.search.substring(1); 
    var queryParameters = {}; 
    var vars = query.split('&'); 
    for (var i = 0; i < vars.length; i++) { 
     var keyValue = vars[i].split('='); 
     var key = keyValue[0]; 
     var value = keyValue.slice(1).join('='); 
     queryParameters[decodeURIComponent(key)] = decodeURIComponent(value); 
    } 

    return queryParameters[parameterName] 
} 
+0

Большое спасибо, что сработало в совершенстве!! Только одна вещь, я получил ошибку: «запрос не определен», поэтому я заменил его: «var vars = window.location.href.slice (window.location.href.indexOf ('?') + 1) .split ('&'); 'есть ли какой-нибудь более короткий путь? Спасибо большое! – user3378165

+0

Да, см. Обновленный ответ –

+0

Работая perfectky, большое спасибо! – user3378165

 Смежные вопросы

  • Нет связанных вопросов^_^