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

    devo passare via jquery un'oggetto a javascript

    ciao devo passare via jquery un'oggetto a javascript il codice è questo
    codice:
    alert($('#flipset').attr('data-settings'));
        Lightbox.defaults =$('#flipset').attr('data-settings');
        //Lightbox.defaults = eval ("{" + $('#flipset').attr('data-settings') + "}"); //questa riga da errore
    
    //con questa funziona 
    ma dovrei passare l'oggetto tramite $('#flipset').attr('data-settings')
       
      Lightbox.defaults = {
        albumLabel: 'Image %1 of %2',
        alwaysShowNavOnTouchDevices: false,
        fadeDuration: 500,
        fitImagesInViewport: true,
        // maxWidth: 800,
        // maxHeight: 600,
        positionFromTop: 50,
        resizeDuration: 700,
        showImageNumberLabel: true,
        wrapAround: false,
      };
    se faccio l'alert i dati da passare ce li ho infatti mi da

    albumLabel: 'Image %1 of %2',
    alwaysShowNavOnTouchDevices: false,
    fadeDuration: 500,
    fitImagesInViewport: true,
    // maxWidth: 800,
    // maxHeight: 600,
    positionFromTop: 50,
    resizeDuration: 700,
    showImageNumberLabel: true,
    wrapAround: false

    come faccio a correggere questa riga, mi date un'aiuto?

    Lightbox.defaults = eval ("{" + $('#flipset').attr('data-settings') + "}"); //questa riga da errore

  2. #2
    ho provato a convertire la stringa in un oggetto json sia con stringify che con parse ma mi da errore questo è il codice
    codice:
     alert($('#flipset').attr('data-settings'));
        Lightbox.defaults =$('#flipset').attr('data-settings');
      
        var str = "{ "+ $('#flipset').attr('data-settings')+" }";
        var obj = JSON.stringify(eval("(" + str + ")"));
        //var obj = JSON.parse(str);
        Lightbox.defaults = obj;
    se tolgo questo codice lascio questo funziona
    codice:
    Lightbox.defaults = {
        albumLabel: 'Image %1 of %2',
        alwaysShowNavOnTouchDevices: false,
        fadeDuration: 500,
        fitImagesInViewport: true,
        // maxWidth: 800,
        // maxHeight: 600,
        positionFromTop: 50,
        resizeDuration: 700,
        showImageNumberLabel: true,
        wrapAround: false
       
      };
    questo è invece l'html attraverso cui ho necessità di passare l'oggetto


    codice HTML:
    <div id='flipset' data-settings="    
                                                                            
        albumLabel: 'Image %1 of %2',
        alwaysShowNavOnTouchDevices: false,
        fadeDuration: 500,
        fitImagesInViewport: true,
        positionFromTop: 50,
        resizeDuration: 700,
        showImageNumberLabel: true,
        wrapAround: false">
        </div>
    come faccio a correggerlo in modo che
    Lightbox.defaults = obj;
    funzioni?? grazie dell'aiuto

  3. #3
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,771
    Ciao, per usare JSON.parse() devi necessariamente assicurarti di passare una stringa JSON valida, altrimenti otterrai comunque SyntaxError. La tua non lo è, tutti i nomi delle proprietà vanno scritti tra doppi apici così come i valori testuali.

    Il metodo JSON.stringify() non ti serve a nulla se devi ottenere un oggetto. Capisco che stai tirando a caso ma quel metodo fa l'esatto contrario, trasforma un oggetto in una stringa, per cui penso proprio che non vada bene.

    La soluzione con eval() è presumibilmente valida e ti dovrebbe funzionare anche come hai scritto nella riga commentata sul primo post.
    Deduco che il problema sia altrove.

    Mi viene da pensare che tu stia cercando di esaminare un oggetto (tale #flipset) che non esiste ancora sul DOM.

    Assicurati che lo script sia eseguito dopo l'avvenuta creazione di quell'oggetto, inserendo lo script dentro il body e dopo quel <div>, oppure all'avenuto caricamento dell'oggetto window usando onload(), o ancora, se usi jQuery, inserendo appositamente lo script dentro il ready().

    Il mio consiglio è quello di usare comunque il metodo JSON piuttosto che eval(), così da avere un controllo più rigido di ciò che si va ad inserire nella proprietà data.

    Un esepio:
    codice:
    <!DOCTYPE HTML>
    <html>
      <head>
        <title>Esempio</title>
        <meta charset="utf-8">
        <script src="http://code.jquery.com/jquery-latest.min.js"></script>
        <script type="text/javascript">
          $(function(){ // <-- il ready jQuery - IMPORTANTE!
            var objSettings = JSON.parse('{'+$('#flipset').data('settings')+'}');
            console.log(objSettings) // <-- La console mostra l'oggetto
            Lightbox.defaults = objSettings; // <-- Assicurati che Lightbox sia correttamente definito
          })
        </script>
      </head>
      <body>
        <div id='flipset' data-settings='
            "albumLabel": "Image %1 of %2"
          , "alwaysShowNavOnTouchDevices": false
          , "fadeDuration": 500
          , "fitImagesInViewport": true
          , "positionFromTop": 50
          , "resizeDuration": 700
          , "showImageNumberLabel": true
          , "wrapAround": false
        '>
        </div>
    </body>
    </html>
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  4. #4
    si grazie mille, con parse senza eval e correggendo gli apici nel json ha funzionato finalmente ciao

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.