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

    Jquery, oggetti e dati via post

    Buongiorno, voglio condividere con voi un problema che magari può essere comune.

    La mia situazione è questa:

    Ho un file js con una lista di opzioni,
    un database mysql con delle impostazioni caricate
    un file php che si occupa di scaricare le informazioni dal database

    Ciò che vorrei fare è riuscire a ricostruire l'oggetto con i dati aggiornati che prelevo via post.
    La sintassi corretta è funzionante è questa:

    codice:
     page =
    		{
    			'about'		: {tab:'left',className:'checkmark'},
    			'blog'			: {tab:'right',className:'info'},
    			'contatti'		: {tab:'left',className:'mail'},
    			'post'			: {tab:'right',className:'info'}
    		};    
    
    I valori vengono poi passati così  
     $('#template').template(options,page);

    Io ho provato a selezionare i dati via post e riscriverli nello stesso formato per poi chiudere il tutto tra i tag facendo attenzione a non avere l'ultima virgola (ho usato un metodo rozzo)

    codice:
     var pages = "page = {";
    
     poi ciclo tutti gli elementi e li riscrivo nel formato corretto
    
     pages += " 'servizi'		: {tab:'right',className:'checkmark'} };";
    Ora... così non funziona!
    Andando a fare un console.log della variabile "page" originale infatti mi restituisce un oggetto. Stampando la mia variabile mi restituisce una stringa.

    Qualcuno ha una soluzione?
    Grasieeee!

  2. #2
    La sintassi per costruire l'oggetto resta sempre quella.

    Supponiamo tu riceva due variabili:
    var x=1;
    var y='pippo';

    crei l'oggetto:
    var pages = {'proprietà1' : x, 'proprietà2' : y};

    La proprietà1 sarà di tipo numerico, la seconda di tipo stringa.

    puoi usare delle variabili anche per il nome della proprietà:

    var pages = {a : x, b : y};

  3. #3
    oppure:

    var pages={};

    pages.className='alpha';
    pages.about.tab='left'

  4. #4
    Grazie molte mi metto a lavoro e aggiorno il post!

  5. #5
    Non ti nego che continuo ad avere qualche problema.

    Ho iniziato a scrivere il post circa 1 ora fa, poi man mano ho provato nuovi tentativi ma non riesco ad arrivare al risultato...

    La mia necessità è questa:
    mettere all'interno di un oggetto chiamato pages, un altro oggetto con delle proprietà, es: Home page con tab='left' e className="pagina-home'

    La mia struttura di base è questa
    codice:
    	var pages = {
     
    'home' : {tab:'left',className:'pagina_home'}
    
    		}
    che da quanto ho capito dovrebbe essere l'equivalente di questo (il codice scritto così non funziona ma è per logica.

    codice:
    	var pages = {
      var home = {
    tab:'left',className:'pagina_home'
    }
      }

    Ingegnandomi un po' ho visto la funzione jquery.extend e credo che possa essere la funzione utile, in pratica mi permette di far questo:


    codice:
    	  var home = {
    tab:'left',className:'pagina_home'
    }
    
    var pages = ($.extend(true, pages, home));
    Facendo così la variabile pages mi si popola in maniera corretta.

    Il mio problema attuale è ora questo, i dati che servono a costruire l'oggetto pages sono in un file esterno. I risultati li ciclo correttamente in js e tutti i valori me li mostra.





    codice:
    $.each(data, function(index, value) {
    		
    var pagina_ciclo = { 
    			index		: {tab:value.tab,className:value.className}
    			}
    
    var page = ($.extend(true, page, pagina_ciclo));
    			
    });
    Ciò che non è corretto è l'output

    L'errore avviene nella costruzione della variabile perchè 'index' non mostra il valore (che nel mio caso dovrebbe essere ad esempio "home") ma mostra la stringa index.

    Sono un po' troppo viziato dal php forse, come posso risolvere questo problema?
    Grazie mille dei tuoi consigli lucavizzi sono stati fondamentali!

  6. #6
    vorrei capire perchè nemmeno questo è possibile
    codice:
     var page01 = { 
    ''+index+'' : {tab:'left',className:'checkmark'}
    		}

  7. #7
    potresti provare con eval(index)

  8. #8
    mi da sempre l'errore, ora sto provando a selezionare i dati in modo diverso passandoli in modo diverso magari risolvo..

    grazie comunque!

  9. #9
    Ok, problema risolto, la procedura che ho usato è stata questa:

    Il file js si prende i dati in formato json dal file php che fa un return di questo:

    Codice PHP:
    $return[pagina] = array();
    $return[pagina]][tab] = "right";
    echo 
    json_encode($return); 
    ed infine usa la funzione extend per collegarlo all'oggetto preesistente

    codice:
      $(document).ready(function() 
        {
    		$.getJSON("plugin/get_info.php",
      {
        format: "json"
      },
      function(data) {
     page =
    		{
    			'post'			: {tab:'right',className:'info'}
    		};    
    
    var page_estesa = ($.extend(true, page, data));
    In questo modo sembra funzionare.
    Ora ho altri intoppi ma il console log mostra quello che deve!

    Grazie del supporto!

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.