Problem mit einfachen und doppelten Anführungszeichen

  • Hallo zusammen,

    ich habe gerade ein Problem mit verschieden aufkommenden Anführungszeichen und kann es einfach nicht lösen.

    Ich habe folgende JavaScript Ausgabe:

    HTML
    <input type="image" src="files/layout/btn_merken.png" name="merken" alt="Artikel-Merken" onclick='xajax_setCookie(1015,"Testwert ohne Anführungszeichen");userInfo(1015);'>
    
    
    <input type="image" src="files/layout/btn_merken.png" name="merken" alt="Artikel-Merken" onclick='xajax_setCookie(1013,"Testwert mit einfachen \'Anführungszeichen\' problematisch"));userInfo(1013);'>
    
    
    <input type="image" src="files/layout/btn_merken.png" name="merken" alt="Artikel-Merken" onclick='xajax_setCookie(1003,"Testwert mit doppelten \"Anführungszeichen\" kein Problem"));userInfo(1003);'>

    Der 1 Wert ohne Anführungszeichen klappt wunderbar.
    Der 2 Wert mit einfachen Anführungszeichen sorgt für Probleme (Firefox Fehlerkonsole: "unterminated string literal")
    Der 3 Wert mit doppelten Anführungszeichen klappt wunderbar.

    Wenn ich nun den onClick aufruf in " statt ' setze klappt es umgekehrt nicht.


    HTML
    <input type="image" src="files/layout/btn_merken.png" name="merken" alt="Artikel-Merken" onclick="xajax_setCookie(1000,'Ohne Anführungszeichen im Wert geht.');userInfo(1000);">
     <input type="image" src="files/layout/btn_merken.png" name="merken" alt="Artikel-Merken" onclick="xajax_setCookie(1013,'Einfache Anführungszeichen \'im Wert\' geht.');userInfo(1013);">
     <input type="image" src="files/layout/btn_merken.png" name="merken" alt="Artikel-Merken" onclick="xajax_setCookie(1003,'Doppelte Anführungszeichen \"im Wert\" geht nicht.');userInfo(1003);">

    Also wenn der Begrenzer des onClick auch im Parameter2 von xajax_setCookie auftaucht, dann gibt es ein Problem...
    auch wenn er mit \ maskiert ist.

    :(

    Der Aufruf wird über ein PHP erzeugt und der Wert mittels addslashes maskiert. Leider kann ich nicht beeinflussen ob einfache oder doppelte Anführungszeichen enthalten sind ... sonst würde ich einfach den Wert anders umschließen.

    Ich habe leider keine Idee mehr wie ich das sowohl mit einfachen als auch mit doppelten Anführungszeichen zum laufen bekomme.

    Würde mich über Tipps freuen,

    vielen Dank!

    Hallo zusammen,

    ich habe gerade ein Problem mit verschieden aufkommenden Anführungszeichen und kann es einfach nicht lösen.

    Ich habe folgende JavaScript Ausgabe:

    HTML
    <input type="image" src="files/layout/btn_merken.png" name="merken" alt="Artikel-Merken" onclick='xajax_setCookie(1015,"Testwert ohne Anführungszeichen");userInfo(1015);'>
    
    
    <input type="image" src="files/layout/btn_merken.png" name="merken" alt="Artikel-Merken" onclick='xajax_setCookie(1013,"Testwert mit einfachen \'Anführungszeichen\' problematisch"));userInfo(1013);'>
    
    
    <input type="image" src="files/layout/btn_merken.png" name="merken" alt="Artikel-Merken" onclick='xajax_setCookie(1003,"Testwert mit doppelten \"Anführungszeichen\" kein Problem"));userInfo(1003);'>

    Der 1 Wert ohne Anführungszeichen klappt wunderbar.
    Der 2 Wert mit einfachen Anführungszeichen sorgt für Probleme (Firefox Fehlerkonsole: "unterminated string literal")
    Der 3 Wert mit doppelten Anführungszeichen klappt wunderbar.

    Wenn ich nun den onClick aufruf in " statt ' setze klappt es umgekehrt nicht.


    HTML
    <input type="image" src="files/layout/btn_merken.png" name="merken" alt="Artikel-Merken" onclick="xajax_setCookie(1000,'Ohne Anführungszeichen im Wert geht.');userInfo(1000);">
     <input type="image" src="files/layout/btn_merken.png" name="merken" alt="Artikel-Merken" onclick="xajax_setCookie(1013,'Einfache Anführungszeichen \'im Wert\' geht.');userInfo(1013);">
     <input type="image" src="files/layout/btn_merken.png" name="merken" alt="Artikel-Merken" onclick="xajax_setCookie(1003,'Doppelte Anführungszeichen \"im Wert\" geht nicht.');userInfo(1003);">

    Also wenn der Begrenzer des onClick auch im Parameter2 von xajax_setCookie auftaucht, dann gibt es ein Problem...
    auch wenn er mit \ maskiert ist.

    :(

    Der Aufruf wird über ein PHP erzeugt und der Wert mittels addslashes maskiert. Leider kann ich nicht beeinflussen ob einfache oder doppelte Anführungszeichen enthalten sind ... sonst würde ich einfach den Wert anders umschließen.

    Ich habe leider keine Idee mehr wie ich das sowohl mit einfachen als auch mit doppelten Anführungszeichen zum laufen bekomme.

    Würde mich über Tipps freuen,

    vielen Dank!


    €dit:
    Habs jetzt selber gelöst.
    Nehme Methode 2 mit einfachen Anführungszeichen für onClick und
    mache jetzt mit str_replace aus ' \'
    und aus " &quot so klappt es.

    Zwar vielleicht nicht elegant, aber ich habe jetzt echt ewig mit dem Problem rumgehampelt.
    Falls jemandem etwas schöneres einfällt kann er sich ja gern noch melden.

    Einmal editiert, zuletzt von VivaLosTioz (2. Dezember 2010 um 16:03)

  • Tjo man kann eben nicht beides haben, weil du ja dann bei einer Variante immer aufsplittest

    Man kostet aber auch nicht die Inlinebefehle bis zum geht nicht aus

    Nehm dir mal als Vorbild Frameworks (Jquery,mootools), diese lösen das viel eleganter