Anführungszeichen in JavaScript übergeben

goddh0r

Member of The Month September
Thread Starter
Mitglied seit
28.04.2003
Beiträge
3.245
Ort
Köln
Hi!

Habe hier bei ner Webanwendung ein Problem:

PHP:
<input type="button" style="font-family:Verdana;font-size:11px;font-weight:bold;" name="Abwesend" value="abwesend" onClick="setAbw(<%=assi.getId()%>, '<%=assi.getGrund()%>', '<%=assi.getNachname()%>')" onMouseOver="window.status='Auf Abwesend setzen'"</input>

also insbesondere gehts um

Code:
onClick="setAbw(<%=assi.getId()%>, '<%=assi.getGrund()%>', '<%=assi.getNachname()%>')"

Das zweite Funktionsargument bereitet mir Kopfzerbrechen, der Wert wird mittels JavaBean aus ner Oracle Datenbank ausgelesen, daher die JSP typischen <% Zeichen, naja und wenn dieser Wert, getGrund() Anführungszeichen wie " oder ' enthält, kollidieren die natürlich im Javascript mit den beiden Anführungszeichen des onclicks und dem des Arguments selber da String... Hab auch schon versucht, die irgendwie mittels getter Methode in der JavaBean zu maskieren, aber willer irgendwie nich akzeptieren...

Irgendwelche Ideen?
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
"einfach" per Backslash escapen, aber keine ahnung wie das in java läuft, notfalls per regex
 
wie gesagt, das hab ich ja in der JavaBean versucht, die Fluchtzeichen gehen aber verloren bei der Auswertung der getter Methode, warum auch immer.
Wie meinste das genau das mim regulären Ausdruck?
 
kannst du nicht bevor getGrund den wert zurückgibt wird nochmal escapen?

Den regulären ausdrück würde ich eben auch da ansetzen im java code der getter methode... Wie das geht weiss ich aber nicht, find keine replace methode per regex...#

hab grad in google

Code:
public static String replaceAll(String source, String search,
                                String replace) {
    if(search.equals(replace)) {
        return source; //kann ja sein, dass wir nichts tun müssen
    }

    StringBuffer result = new StringBuffer();
    int len = search.length();
    if(len == 0) {
        return source; //verhindert Endlosschleife bei search.equals("");
    }

    int pos = 0; //position
    int nPos;    //next position
    do {
        nPos = source.indexOf(search, pos);
        if(nPos != -1) { //gefunden
            result.append(source.substring(pos, nPos));
            result.append(replace);
            pos = nPos+len;
        } else { //nicht gefunden
            result.append(source.substring(pos)); //letzter abschnitt
        }
    } while(nPos!= -1);

    return result.to
gefunden, damit lassen sich einzelne elemente in strings ersetzem, hab in java direkt nix gefunden.

und da dann " durch \" und ' durch \' ersetzen

und ich hoffe ich geh nicht ganz an dem vorbei was du willst ;)
 
Achso das meinste ja klar das hab ich ja gemacht, wenn ich die Getter Methode in der Entwicklungsumgebung ausführe und den Rückgabewert anzeigen lasse, sind eventuelle Quotes maskiert, allerdings scheint JavaScript diese Maskierung nicht zu übernehmen
 
kannst du mal den geparsten htmlcode posten?
 
PHP:
<input type="button" style="font-family:Verdana;font-size:11px;font-weight:bold;" name="Abwesend" value="abwesend" onClick="setAbw(2, 'ab'wesend', 'Meier')" onMouseOver="window.status='Auf Abwesend setzen'" "></input>

jetz als beispiel mit dem String ab'wesend
 
wie gesagt, theoretisch würde es mit ab\'wesend laufen, aber den backslash musst du da irgendwie reinkriegen... mit javascript geht da nix :/
 
VeRschRanZt schrieb:
' durch \\\' ersetzen ergibt nach dem parsen \'

jupp genau das hab ich ja gemacht, JBuilder zeigts mir auch korrekt maskiert an, siehe Anhang, allerdings interessiert das das Javascript irgendwie überhaupt nicht.
 

Anhänge

  • escape.jpg
    escape.jpg
    20,3 KB · Aufrufe: 70
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh