Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    Php e js: js non legge a capo

    Buongiorno a tutti,
    dopo vari tentativi non resisto a chiedervi un aiuto per risolvere il problema della lettura degli a capo tramite js.

    Ho un a lista di pulsanti generata automaticamente, ogni pulsante apre una dialog con dei dati relativi ad un id, tra i quali un campo note con degi a capo scritti in una texarea.

    Ho trasformato con str_replace in php gli \n in <br /> ma lo script .js solo per l'esistenza di questo campo del db contenente a capo o br ecc viene bloccato, addirittura non apre neanche la dialog, l'errore è questo SyntaxError: unterminated string literal

    riporto alcuni codici

    php:
    Codice PHP:
    \\questa è la variabie incriminata
    $note_servizio 
    str_replace("\n""<br />"$_GET['note_servizio']); 

    javascript:
    codice:
    function dettagli(idserv, nomeserv, icona, nomecust, datainizio, datafine, importo, intestatariofatturazione, referente, note) {            
              var idserv = idserv;
              var nomeserv = nomeserv;
              var icona = icona;
              var nomecust = nomecust;          
              var datainizio = datainizio;
              var datafine = datafine;
              var importo = importo;
              var intestatariofatturazione = intestatariofatturazione;
              var referente = referente;
              var note = note;
    
    \\Gia qui è bloccato!
    
              var wWidth = $(window).width();
              var wHeight = $(window).height();  
              $( ".dialog" ).dialog({           
                autoOpen: false,
                height: wHeight * 0.5,
                width: wWidth * 0.5,
                modal: true,           
                resizable: false,
                show: {
                  effect: "blind",
                  duration: 200
                },
                hide: {
                  effect: "fade",
                  duration: 200
                },
                open: function(){
                    $('.ui-widget-overlay').bind('click',function(){
                    $('.dialog').dialog('close');
                    });
                }                        
              });
                $( ".opener" ).on( "click", function() {
                $( ".dialog" ).dialog( "open" );
    \\dialog generata dinamicamente 
                $( ".dialog" ).html("<p><i class='fa " + icona + " fa-2x' aria-hidden='true'></i> " + nomeserv + " di " + nomecust + "</p><p> Data inizio: " + datainizio + "</p>");
              });
            };

    Potreste darmi una mano a capire come far leggere a js anche i campi con degli a capo?
    Grazie mille in anticipo,
    Andrea
    Ultima modifica di Andrea22php; 14-05-2018 a 11:57

  2. #2
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Scusa, ma $note_servizio dove la usi ? Inoltre hai visto il codice sorgente della pagina generata se contiene degli errori ?

  3. #3
    Quote Originariamente inviata da boots Visualizza il messaggio
    Scusa, ma $note_servizio dove la usi ? Inoltre hai visto il codice sorgente della pagina generata se contiene degli errori ?
    Ciao boots,
    quella variabile la uso per un INSERT nel db, sostituisco gli \n in <br /> ma .ja non me li legge, mi blocca il pulsante e quindi lo script, infatti se non ci sono a capi, br ,\n ecc funziona, in pratica se sta tutto su una linea non c'è problema.

    L'errore è questo:
    SyntaxError: unterminated string literal

  4. #4
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Guarda, nel codice hai solo variabili quindi non vedo come possa bloccarti il codice...note, parametro della funzione dettagli, da voce viene ?

  5. #5
    Quote Originariamente inviata da boots Visualizza il messaggio
    Guarda, nel codice hai solo variabili quindi non vedo come possa bloccarti il codice...note, parametro della funzione dettagli, da voce viene ?
    Passo la variabile in questo modo tramite un bottone:

    Codice PHP:
    " onclick=\"dettagli("
                                    
    "$id_serv,"
                                    
    " '$nome_serv',"
                                    
    " '$icona',"
                                    
    " '$nome_cust',"
                                    
    " '$data_inizio',"
                                    
    " '$data_fine',"
                                    
    " '$importo',"
                                    
    " '$intestatario_fatturazione',"
                                    
    " '$referente_servizio',"
                                    
    " '$note_servizio'"
                                    
    ");\"" 
    Il campo note_servizio è un campo scritto tramite mysql e deve essere letto tramite questa funzione, avendo però degli a capo dà questo problema...

  6. #6
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Mi pare ovvio che scrivendo così $note_servizio (o altre variabili che contengono caratteri speciali) ti vanno a "rompere" il codice. Il problema è che hai la variabile dentro al tag html il che porta altre complicazioni. Potresti passare $note_di_servizio alla json_encode().
    Però stai attento che la funzione mette la stringa tra " ", quindi dovresti sostituire il delimitatore della onclick da " -> '
    Inoltre se ci sono singoli apici nella variabile, si "rompe" di nuovo il codice, per ovviare dovresti farne l'escaping o aggiungere JSON_HEX_APOS come secondo parametro alla json_encode()

  7. #7
    Grazie boots ora faccio una ricerca in merito alle cose che mi hai scritto, non ho mai utilizzato queste funzioni quindi devo capirci più di qualcosa , comunque grazie ancora per il tuo supporto!

  8. #8
    In realtà ora stavo facendo una prova e in questo modo che tra poco ti riporto funziona, però...non riesco a ritrasformare le \ in a capo per leggere bene il testo:

    .php
    codice:
    $note_servizio = str_replace("\r", "\\", $_GET['note_servizio']);
    .js
    codice:
    note = note.replace("\\", "\n");
                $( ".dialog" ).html("<p><i class='fa " + icona + " fa-2x' aria-hidden='true'></i> " + nomeserv + " di " + nomecust + "</p><p> Data inizio: " + datainizio + "</p><p class='note'> Note: " + note + "</p>");

  9. #9
    Utente di HTML.it L'avatar di boots
    Registrato dal
    Oct 2012
    Messaggi
    1,626
    Comunque...non mi sembra brillantissima come idea quella di passare i valori come fai tu. Possibile che non hai altro modo?

  10. #10
    Le ho provate tutte ma mi sembra l'unico modo per rendere la dialog dinamica, ho fatto varie ...varissime prove

Tag per questa discussione

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