2016-08-02 4 views
2

Ich brauche Query String Prameters durch ihre Namen.Abfrage String-Parameter einschließlich aller Zeichen mit Javascript

Meine Parameter umfassen alle Arten von Zeichen einschließlich '=' Zeichen. Hier

ein Beispiel:

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

Ich habe versucht, dass:

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

Aber es ersetzt die '+' Zeichen mit weißen Räumen:

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

Ich habe versucht, dass:

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]; 
} 

Aber das schließt '=' Zeichen nicht ein ...

Irgendwelche Ratschläge?

+0

So ... im Grunde ... Ihre Abfrage-String falsch gebildet wird. Wie wäre es, das zu reparieren, was es erzeugt, anstatt zu versuchen, die Fehler zu hacken? – Quentin

+0

@Quentin Dies ist, wie asp.net Identität einen Code erzeugt, um ein Passwort zurückzusetzen, ich habe es nicht von mir selbst geschrieben und möchte nicht wirklich versuchen, ihr System zu ändern .. – user3378165

Antwort

1

Ihr zweiter Versuch ist nahe genug, man muss nur Wert Teile verbinden zurück nach .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

Vielen Dank, das hat funktioniert perfekt!! Nur eine Sache, ich habe einen Fehler: "Abfrage ist nicht definiert", also habe ich es ersetzt mit: 'var vars = window.location.href.slice (window.location.href.indexOf ('?') + 1) .split ('&'); 'gibt es einen kürzeren Weg? Vielen Dank! – user3378165

+0

Ja, siehe aktualisierte Antwort –

+0

Arbeiten perfectky, vielen Dank !! – user3378165

Verwandte Themen