Autor Thema: [gelöst] String mit + | JavaScript Übergabe an Perlfunktion  (Gelesen 518 mal)

Offline HomeAuto_User

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 654
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
SPORT1an.

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?  ::)
« Letzte Änderung: 03 November 2019, 10:33:00 von HomeAuto_User »
"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet

Offline Thorsten Pferdekaemper

  • Developer
  • Hero Member
  • ****
  • Beiträge: 5764
  • Finger weg von der fhem.cfg
Antw:String mit + | JavaScript Übergabe an Perlfunktion
« Antwort #1 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
RasPi
Heizkessel-Steuerung per Arduino und HTTPMOD
und einen Haufen Homematic (Wired)

Offline HomeAuto_User

  • Developer
  • Sr. Member
  • ****
  • Beiträge: 654
Antw:String mit + | JavaScript Übergabe an Perlfunktion
« Antwort #2 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
"Developer" heißt nicht, das man alles wissen kann!
- FHEM v5.9 | Rasberry PI 3
- radino CC1101 433Mhz (SIGNALduino)| - radino CC1101 868Mhz (CUL) | nano 433Mhz (SIGNALduino) - Sensoren: purer Dschungel querbeet

 

decade-submarginal