Probleme mit split

azenth

Mitglied
Hallo Java-Forum Community,

ich habe ein Problem mit split auf einer meiner Webseiten.

Zu dem Problem. Wenn ich via URL Parameter verarbeite dann mache ich das normalerweise wie folgt:

Javascript:
var searchString = document.location.search + document.location.hash;
var params=new Array();

searchString = searchString.substring(1);
searchString = decodeURIComponent(searchString);

var nvPairs = searchString.split("&");

for (i = 0; i < nvPairs.length; i++) {
  var nvPair = nvPairs[I].split("=");
  var  urlParam = new Object();

  urlParam.key = nvPair[0];
  urlParam.value = nvPair[1];
  params[I] = urlParam;
}

Wie man sieht sind alle key/value Paare durch ein & von einander getrennt. In der for-Schleife splitte ich dann key und value. Jetzt hab ich das Problem, dass ich in dem Value Wert bei einem key auch ein = Zeichen habe, was dazu führt, dass alles nach dem = Zeichen abgetrennt wird.

z.B:
http://localhost/jsp/index.jsp?server=localhost&msg=Meine Severity=ERROR

Das führt dazu, dass msg als key erkannt wird und im value Bereich dann nur Meine Severity drin steht und =ERROR nicht mehr angezeigt wird.

Hat jemand einen Tipp für mich?

Gruß
 
Zuletzt bearbeitet von einem Moderator:

stg

Top Contributor
Du musst das = im Parameter-Value richtig escapen.
Für das = Zeichen ist das z.B. der escape-String %3d
 

azenth

Mitglied
Hi stg,

danke für die Antwort. Ich habe auch ans encoden gedacht. Aber das Löst das eigentliche Problem nicht.

http://localhost/jsp/index.jsp?server=localhost&msg='Meine Severity=ERROR'

Wenn ich mit
Javascript:
var nvPair = nvPairs[i].split("=");
meine key/value Paare splitte, dann geniere ich in diesem Fall 3 Elemente von nvPair.

Ich habe jetzt die Lösung gefunden:
Javascript:
if (nvPair.length > 2) {
  for ( j = 1; j < nvPair.length; j++) {
    tnvPair = tnvPair + nvPair[j] + "=";
  }
  urlParam.value = tnvPair.substr(0,tnvPair.length-1);
} else {
  urlParam.value = nvPair[1];
}
Hier prüfe ich, ob es mehr als 2 Elemente von nvPair gibt. Wenn ja füge ich diese den value Teil zusammen, sonst bleibt alles wie gehabt.

Gruß
 
Zuletzt bearbeitet von einem Moderator:
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben