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

    [jquery (ajax), smarty, php] consiglio ottimizzazione codice

    Ciao a tutti,
    premetto che ho sempre tenuto alla separazione della presentazione dalle funzionalità, e quindi utilizzo smarty, jquery e php.
    Con jquery sto iniziando a sviluppare delle applicazioni in ajax, ma mi è venuto subito un dubbio sull'ottimizzazione della programmazione.
    In pratica, quando si fa una richiesta asincrona e si ricevono i dati di risposta, questi ultimi in genere devono essere aggiunti alla pagina.
    Nell'esempio di una tabella, deve essere aggiunta una nuova riga con i dati appena inseriti.
    Quindi oltre ad avere il template (html) completo della tabella, dovrò DUPLICARE nella funzione javascript il codice html della riga che deve essere aggiunta
    Ad esempio in questo modo: $("#tabella").append('<tr><td>'+data.campo1+'</td><td>'+data.campo2+'</td></tr>');
    La mia domanda è se c'è un modo per evitare di dover riscrivere codice html nella funzione javascript, magari utilizzando smarty.
    Fin quando il codice è semplice può andare anche bene la soluzione di sopra, ma quando è più complesso diventa difficile manutere il codice quando ad esempio devono essere fatte delle variazioni (si deve modificare sia l'html che il javascript).
    Voi come fate?
    Grazie.
    Antonio GIULIANA
    http://www.antoniogiuliana.it
    Soluzioni Informatiche Per Il Tuo Business

  2. #2
    Utente di HTML.it L'avatar di Xinod
    Registrato dal
    Sep 2000
    Messaggi
    13,649
    una volta che hai ottenuto il codice in risposta alla tua chiamata ajax qualsiasi linguaggio lato server e' fuori dai giochi, cosi' come qualsiasi template engine

  3. #3
    Quindi l'unica soluzione è quella di duplicare il codice html nella funzione javascript affinché possa aggiungere i nuovi dati alla pagina?
    E' per questo che sono ancora un po' restio all'utilizzo di ajax, perché diventa più difficile manutenere il codice.
    Antonio GIULIANA
    http://www.antoniogiuliana.it
    Soluzioni Informatiche Per Il Tuo Business

  4. #4
    prova a vedere le funzioni degli elementi del dom Table, TableCell, TableRow che puoi trovare ad esempio qui http://www.w3schools.com/jsref/dom_obj_table.asp

    Ad esempio se vuoi aggiungere una riga a una tabella basta fare una cosa del genere
    codice:
    function insertRow()
    {
    var x=document.getElementById('myTable').insertRow(0);
    var y=x.insertCell(0);
    var z=x.insertCell(1);
    y.innerHTML="testo cella 1";
    z.innerHTML="testo cella 2";
    }

  5. #5
    Il problema non era come inserire una riga di una tabella in javascript, ma se fosse la soluzione ottimale come logica di programmazione.
    Se ad esempio la riga contiene degli elementi statici come immagini, link e attributi, e quindi con una struttura un po' più articolata, essi si dovrebbero riscrivere anche nel codice javascript e di conseguenza mantenerli aggiornati in due posti diversi (html e javascript).
    A quanto pare però, è necessario fare così per usare ajax.
    Antonio GIULIANA
    http://www.antoniogiuliana.it
    Soluzioni Informatiche Per Il Tuo Business

  6. #6
    riprendendo il tuo esempio della tabella suggerivo un modo più leggibile e sicuramente meglio manutenibile rispetto all'appendere codice html, modo che si può utilizzare in qualunque situazione. In questa maniera si perde meno tempo con tag di apertura/chiusura, apici, doppi apici, caratteri di escape ecc.
    A seguito di una richiesta ajax qualcuno preferisce far generare al server una risposta contente solo i dati in formato json o xml, da utilizzare per popolare il dom modificando elementi già presenti o creandone di nuovi; qualcun altro preferisce farsi generare porzioni di codice html da appendere al volo nel punto esatto del dom.
    Sinceramente non vedo alcun problema di duplicazione e di eventuali doppie modifiche: se la modifica riguarda il template modifico il template, se la modifica riguarda la porizione di pagina generata in seguito ad una chiamata ajax, modifico la callback della funzione. Certo se voglio eliminare un elemento del template che successivamente modifico attraverso javascript devo agire sia sul template che sul javascript

  7. #7
    Si, forse sarà solo una questione di abitudine...
    Grazie.
    Antonio GIULIANA
    http://www.antoniogiuliana.it
    Soluzioni Informatiche Per Il Tuo Business

  8. #8
    Con jQuery puoi fare il clone di una riga che già hai e poi modificarne i valori, è una cosa molto semplice, ti evita l'uso di html e ti permette di mantenere la formattazione, classi, etc. etc. della riga da cui cloni.

  9. #9
    Questa mi sembra una soluzione più intelligente...
    In effetti mi ero posto la domanda se con jquery ci fosse una funzione specifica per facilitare questo compito.
    Mi informerò. Grazie.
    Antonio GIULIANA
    http://www.antoniogiuliana.it
    Soluzioni Informatiche Per Il Tuo Business

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.