FHEM Forum

FHEM - Entwicklung => FHEM Development => Thema gestartet von: HomeAuto_User am 03 November 2019, 00:24:05

Titel: [gelöst] String mit + | JavaScript Übergabe an Perlfunktion
Beitrag von: HomeAuto_User am 03 November 2019, 00:24:05
Hallo,

ich habe eine JavaScriptfunktion welche funktioniert aber sobald innerhalb des Strings eine + erscheint wird mir dies immer wieder entfernt.

Funktion
FW_cmd(FW_root+ \'?XHR=1"'.$FW_CSRF.'"&cmd={EPG_FW_Attr_Channels("'.$name.'","\'+Channel+\'","\'+desired_channel+\'")}\');

Variabte Channel mit Wert
SPORT1+

Kommt im Perl immer wieder nur
SPORT1
an.

Oder das Array mit den Werten
var fruits = ["Banan+a", "Orange+", "Apple", "Mango"];

wird zu
Banan a,Orange ,Apple,Mango

Ich habe schon versucht das Ganze zu maskieren oder mit dem Befehl String() versehen aber nichts kommt zum Erfolg.  :o
Eine Mithilfe wäre sehr hilfreich.

MfG

EDIT:
Nach mehrfachen Tests komme ich zum Entschluss, das vermutlich bei der Überhabe JavaScript -> PERL das + durch ein Leerzeichen ersetzt wird  :-[ :'( :'(
Ist das gewollt?  ::)
Titel: Antw:String mit + | JavaScript Übergabe an Perlfunktion
Beitrag von: Thorsten Pferdekaemper am 03 November 2019, 10:01:06
Hi,
ich kann mich erinnern, dass ich auch mal das Problem hatte. Das Problem ist, dass URLs eigentlich keine Leerzeichen enthalten können und es daher durch "+" oder "%20" ersetzt wird. Hast Du schonmal versucht, das ganze vor dem Aufruf von FW_cmd durch encodeURIComponent zu jagen bzw. das "+" durch "%2B" zu ersetzen?
Gruß,
   Thorsten
Titel: Antw:String mit + | JavaScript Übergabe an Perlfunktion
Beitrag von: HomeAuto_User am 03 November 2019, 10:32:35
Guten Tag,
vielen Dank für die Antworten hier im Forum und auch direkt.

encodeURIComponent ()

ist die Lösung um einen String in JavaScript mit enthaltenem + an Perl zu übergeben.

Soetwas dachte ich mir schon aber war immer nur auf der falschen encode Funktion unterwegs.

Danke