BjurisMedlem sedan juli 2001514 inlägg Jag har en text som kommer från en databas, på varje rad så har jag en "edit knapp" som kopierar in vald data i inputfälten.
Ibland så kan det dock förekomma enkelnuttar i texten typ Int'l och det gör ju så att min sida inte fungerar som den skall.
<a href="#" OnClick="CopyFields('<%=cityVO.getIdCitycode()%>','<%=cityVO.getCityname()%>','<%=cityVO.getCountrycode()%>', '<%=cityVO.getIdTimezone()%>');">edit</a>
Hur skall man lösa det?
@ndersMedlem sedan juni 200032 969 inlägg Du får escapea med backslash.
<%=replace(cityVO.getIdCitycode(), "'", "\'")%>
BjurisMedlem sedan juli 2001514 inlägg men blir inte problemet då att när jag kopierar in texten i inputfälten så får jag med \' istället?
@ndersMedlem sedan juni 200032 969 inlägg Nej, det får du inte. \ är ett escapetecken, och skickas inte vidare någonstans i detta tillfälle.
BjurisMedlem sedan juli 2001514 inlägg Får i varje fall samma scriptfel när jag kört en replace på det.
<%=stationVO.getStationname().replaceAll("'", "\'")%>
ie
om jag kör en replace enl:
<%=stationVO.getStationname().replaceAll("'", "blabla)%>
så får jag inget scriptfel
@ndersMedlem sedan juni 200032 969 inlägg hur ser resultatet ut då?
det som är viktigt är ju hur webbläsaren ser koden.
BjurisMedlem sedan juli 2001514 inlägg Resultat 1:
<a href="#" OnClick="CopyFields('AMA','Amarillo Int'l TX','AMA','true')">edit</a>
Resultat 2:
<a href="#" OnClick="CopyFields('AMA','Amarillo Intblablal TX','AMA','true')">edit</a>
så själva "upptäckten" av tecknet fungerar
@ndersMedlem sedan juni 200032 969 inlägg Öh, vad kör du för språk på serversidan?
Du måste eventuellt escapea din backslash om backslash används som escapetecken i din miljö.
<%=stationVO.getStationname().replaceAll("'", "\\'")%>
BjurisMedlem sedan juli 2001514 inlägg Har testat det, men det fungerr inte.
jag kör Java J2EE, så \ är kanske inte escapesekvensen.
@ndersMedlem sedan juni 200032 969 inlägg Mitt senaste exempel funkar alltså inte?
På vilket sätt funkar det inte?
BjurisMedlem sedan juli 2001514 inlägg ger samma scriptfel och samma resultat
<a href="#" OnClick="CopyFields('AMA','Amarillo Int'l TX','AMA','true')">edit</a>
BjurisMedlem sedan juli 2001514 inlägg Efter att ha testat diverse escapesekvener
\$ , #{ osv så kom jag fram till att denna fungerar på rätt sätt.
<%=stationVO.getStationname().replaceAll("'", "\\\\'")%>
aasahMedlem sedan mars 20034 471 inlägg Skälet till att du behöver fyra \ i starten, är att ett \ måste överleva TVÅ escapade miljöer. Först körs strängen genom ditt serverscript, som tolkar \\ som \. Sådana har du två av. Den kod som skickas till webbläsaren och JS-tolken är därför '\\'.
Sedan tolkar JS denna sträng och resultatet blir då den \ du från början ville ha in.
(Denna "dubbel-escaping" satte rejäla myror i huvudet på mig för drygt ett år sedan.)