Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    86

    [JSP]Passare parametro contenente apostrofo

    Salve a tutti,
    devo passare a una funzione javascript un certo numero di parametri ritornati dal DB tra cui ci sono dei codici ma anche delle descrizioni come nomi e cognomi.

    codice:
    "
    Dove value è un insieme di parametri formattati ad esempio nel seguente modo:

    codice:
    '12','23','societa' privata'
    societa' è una descrizione; trascurando il procedimento attraverso il quale viene ritornato, altrimenti bisognerebbe andare più nell specifico, il punto è che torna dal DB scritto evidentemente alla bene e meglio usando l'apostrofo anziche il carattere accentato à

    Quando passo il parametro alla funzione visualizzaEnte si ha un'errore javascript poiché il browser lo interpreta come carattere di chiusura del parametro e poi, anziché trovare una virgola o una parentesi di chiusura trova un altro carattere alfanumerico

    Qualcuno mi può aiutare?

  2. #2
    Utente di HTML.it L'avatar di m4rko80
    Registrato dal
    Aug 2008
    residenza
    Milano
    Messaggi
    2,655
    encode() decode() puoi provare queste intanto.

    miafunzione(encode(valore));

    miafunzione(valore){
    decode(valore)
    }

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    86
    posto il codice:

    codice:
    	var formatSele = function(value, rowIndex){
    		ret= "--";
    	    if(value!="?" && value!="")
    			ret= "<A href=\"javascript:visualizzaAffidamenti(encode("+value+"));\"><IMG SRC=\"images/v.gif\" border=\"0\" alt=\"Varia/Inserisci incarico\"></A>";
    		return ret;
    	};
    formatSele andrà poi a formattare un elemento html generato con un framework(a chi interessasse si tratta di Dojo)

    andando però con il debug javascript di FF ho il seguente errore javascript:

    codice:
    missing ) after argument list

  4. #4
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    La soluzione puo' essere solo lato server: quando leggi dal db fagli sostituire gli apici con \'
    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

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    86
    L'ho fatto ma il backslash non viene memorizzato nel JSONObject poiché Java lo interpreta come carattere di escape, per cui alla funzione viene passato comunque

    codice:
    '12','23','societa' privata'
    La stessa cosa avviene sostituendo l'apostrofo con "&#39"

  6. #6
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Originariamente inviato da valeof
    poiché Java lo interpreta come carattere di escape
    raddoppialo \ \ '
    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

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    86
    Perfetto,
    ora funziona


  8. #8
    Potete postare come avete risolto il problema? grazie.

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    86
    La soluzione è gestire la situazione lato server: nel parametro da passare alla jsp viene sostituito l'apostrofo con \\ ' (senza spazio tra il doppio backslash e l'apostrofo, l'ho dovuto mettere perché non veniva rappresentato)

    Es.

    codice:
    String valoreDaPassare=Formatta.replace(danneggiato.getDesDann(), "'","\\ '");
    dove la classe Formatta contiene il seguente metodo replace :

    codice:
    public class Formatta{
    
    	public static String replace (String str, String old, String nuova){
    	  String trasformata = str;
    	  if(str!=null){
    		  int lunghezza = old.length();
    		  int posizione = str.indexOf(old);
    		  if(posizione!=-1){
    			trasformata=str.substring(0,posizione) + nuova + replace(str.substring(posizione+lunghezza),old, nuova);
    		  }
    	  }
    	  return trasformata;
    	}
    
    
    }
    Spero sia di aiuto, buona giornata

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2008
    Messaggi
    9
    Scusate il ritardo ma io ho risolto utilizzando nei cognomi memorizzati nel DB l'entità & acute; ( senza spazio tra & e acute; ) invece dell'apostrofo. Non so quanto sia corretto ma funziona.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.