Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    Problema nell'inserimento di apici o apostrofi

    Ciao.
    Purtroppo per me sembra un grave problema, spero di no. Non so se è la sezione giusta questa perché parlerò sia di Javascript che di Asp.net.

    Nella mia pagina asp.net uso uno script javascript per caricarmi le mappe di google e i miei marker con relativo fumetto a comparsa se l'utente ci clicca sopra.
    Ogni fumetto ha un commento che viene inserito dall'utente, quindi i marker sono creati dall'utente.

    In pratica quando si inseriscono doppi apici la mia mappa non si vede più, se li tolgo allora torna a funzionare.

    Il problema ho capito dove è, ma non riesco a risolverlo.
    Nello script ho questo:
    codice:
    var markers = [<asp:Repeater id="queryres" runat="server"><ItemTemplate>{titolo:"<%# Eval("titolo") %>", descrizione:"<%# Eval("descrizione") %>"}</ItemTemplate><SeparatorTemplate>,</SeparatorTemplate></asp:Repeater>];
    Eval viene sostituito con il commento e il titolo inseriti dall'utente, e se l'utente inserisce i doppi apici allora mi da problemi e sono costretto a rimuovere l'apice dal db.

    Ovviamente il problema è che al posto delle variabili Eval verrà inserito il contenuto della variabile e se c'è un apostrofo, allora le virgolette non corrispondono più...
    Giudica i tuoi successi dagli sforzi che hai dovuto compiere per superarli

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Lato server devi sostituire i doppiApici con /"

    ti sposto
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    ciao,
    scusa ma non ho capito e vorrei fare dei testi.
    La riga di codice che hai presentato, dove l'hai inserita? in che punto?
    che versione di ASP.NET usi?

    Per quanto riguarda il javascript, si in teoria ogni carattere tipo virgolette, apostrofi, doppie virgolette, all'interno di una stringa, lo dovresti far precedere da "\" (occhio non "/")
    In questo modo viene considerato come semplice carattere dentro la stringa.

    Altra alternativa è usare la funzione escape() di javascript, ma prima vorrei capire dove e come hai messo la riga di codice presentata.

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    come detto da br1 basta sostituire le ricorrenze di " con \"

    infatti lui ottiene un vettore di oggetti javascript:

    var markers = [{titolo:"xxx", descrizione:"xxx"}, {titolo:"xxx", descrizione:"xxx"}];

    io faccio così:

    titolo:"<%# nulltostring(Eval("titolo")).replace(""""c, "\""") %>"

    nulltostring è una funzione vb.net che converte gli eventuali db.null nella stringa vuota.

    Pietro

  5. #5
    Allora rispiego più dettagliatamente e faccio un esempio di quello che ottengo.
    Uso Asp.net 4.0.
    Nella pagina .aspx ho inserito una porzione di codice in javascript

    codice:
    <asp:Content ID="Content1" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
    ...
    <script type="text/javascript">
    ...  
    var markers = [<asp:Repeater id="queryres" runat="server"><ItemTemplate>{titolo:"<%# Eval("titolo") %>", descrizione:"<%# Eval("descrizione") %>"}</ItemTemplate><SeparatorTemplate>,</SeparatorTemplate></asp:Repeater>];
    ...
    Ho notato che quando non vengono inseriti apici o anche caratteri speciali (es. <, >, /, ', ecc..)
    ottengo questo:
    var markers = [{titolo:'una ape', descrizione:'ciao'}];

    Invece se inserisco questi caratteri "sporchi" ottengo:
    var markers = [{titolo:'un'ape', descrizione:'ciao'}];

    Ho provato a mettere al posto di:
    "<%# Eval("descrizione") %>"
    questo:
    /"<%# Eval("descrizione") %>/"
    ma non va bene...
    Giudica i tuoi successi dagli sforzi che hai dovuto compiere per superarli

  6. #6
    anche se non ho capito cosa ci fa un repeater dentro una stringa javascript..... ?!?!?!?!
    la soluzione è questa:
    codice:
    var markers = [<asp:Repeater id="queryres" runat="server"><ItemTemplate>{titolo:"<%# HttpUtility.JavaScriptStringEncode(Eval("titolo")) %>", descrizione:"<%# HttpUtility.JavaScriptStringEncode(Eval("descrizione")) %>"}</ItemTemplate><SeparatorTemplate>,</SeparatorTemplate></asp:Repeater>];
    in sostanza, siccome le stringhe le devi usare dentro uno script javascript, devi trasformarle in modo leggibile al client, usando il metodo HttpUtility.JavaScriptStringEncode

    ciao

  7. #7
    GRANDE!

    Funziona ovviamente : )
    Giudica i tuoi successi dagli sforzi che hai dovuto compiere per superarli

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.