Wpis z mikrobloga

#programowanie #javascript #angular
Mam mały problem i szukam najlepszego rozwiązania, mianowicie przesyłanie nazwy usera w URL - jeden z klientów userów tworzy na zasadzie "domena\username". Wcześniej załatwiałem to w taki sposób:

const userName = encodeURIComponent(this.username as string);
No ale \ wiadomo, że w JS służy jako escape przez co encodowanie sie nie udaje. Jak ugryźliście taki temat?
  • 16
  • Odpowiedz
@Dominias: nie czaje, \ jako escape character występuje w string literalu, czyli jak explicite w kodzie źródłowym definiujesz stały string z tym znakiem
a jak \ jest po prostu wprowadzony z jakiegos inputu to to jest zwykły znak a nie żaden escape character
  • Odpowiedz
@LollyPoop: spójrz na metodę, jak pod this.username kryje się coś takiego jak 'test\user' to URL jest niepoprawny i request nie przechodzi, dlatego utworzyłem zmienną żeby przekazywać encoded userNamea:

startDownload(filename: string, type: DownloadType): void {
const userName = encodeURIComponent(this.username as string);
window.open('${ApiEndpoints.DOWNLOADS}/${userName}/${type}/${filename}');
}

No ale to wciąż nie załatwi błędu bo metoda encodeURIComponent zwróci błąd jak natrafi na \
  • Odpowiedz
@Dominias: tam jest jeden backslash, te 2 backslashe w definicji userName to string literal i tam backslash występuje jako escape character, po przypisaniu do zmiennej backslash jest już jeden
  • Odpowiedz