Valutazione 4.87/ 5 (100.00%) 5838 voti

Condividi:        

[AJAX+Scriptaculous] Aggiornare la lista

Problemi di HTML? Di PHP, ASP, .NET, JSP, Perl, SQL, JavaScript, Visual Basic..?
Vuoi realizzare programmi in C, C++, Java, Ruby o Smalltalk, e non sai da che parte cominciare?
Entra qui e troverai le risposte!

Moderatori: Triumph Of Steel, archimede

[AJAX+Scriptaculous] Aggiornare la lista

Postdi Triumph Of Steel » 14/09/06 17:51

Ho un problemino.

Sto facendo dei test con Ajax + scriptaculous.

Inserendo nell'HTML una semplice lista, e richiamando la "Sortable.Create" (basata su <div>), tutto funziona bene. Anche l'aggiornamento del Database.

Vorrei creare quella lista tramite AJAX.
In pratica uso uno script che richiama una pagina PHP che si occupa di generare i vari <div> della lista.
Il problema è che la Sortable.Create poi non funziona più.

Codice: Seleziona tutto
###
questa funzione chiama una pagina PHP e viene generata la lista all'interno del div "item_list"
###
<div id="item_list"></div>
   <script language="JavaScript" type="text/javascript">
   ar_writeContent('response.php?a=items','item_list');
   </script>

Codice: Seleziona tutto
###
e questa è la parte della Sortable
###
Sortable.create(
   'item_list',
   {
      dropOnEmpty:      true,
      tag:            'div',
      //containment:["left","middle","right"],
      constraint:         false,
      //ghosting: true,
      onUpdate:         updateOrder
   }
);


secondo me la sortable.create non funziona perchè si trova all'inizio il div "item_list" vuoto.
c'è modo di richiamare la sortable dopo aver richiamato (e quindi riempito) la lista?
E' possibile anche ri-recreare la lista (sempre con ajax + sortable) dopo aver aggiunto o cancellato una voce?

grazie!
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Sponsor
 

Postdi archimede » 14/09/06 17:57

Non so nulla di Ajax e quasi nulla di PHP, ma il DIV non dovresti chiuderlo DOPO la writeContent?

HTH.

Alessandro
archimede
Moderatore
 
Post: 2755
Iscritto il: 07/11/02 12:41
Località: Genova

Postdi Triumph Of Steel » 14/09/06 21:29

no, perchè il javascript, dopo aver preso il contenuto ricevuto dalla pagina PHP che è stata richiamata, fa un INNERHTML nel div.
ho provato cmq anche a mettere il JS all'interno del DIV, ma nulla.. il listato viene cmq scritto giusto in entrambi i casi, e cioè:
Codice: Seleziona tutto
<div id="item_list">
      <div id="item_1">test 1</div>
      <div id="item_2">test 2</div>
      <div id="item_3">test 3</div>
      <div id="item_4">test 4</div>
</div>

infatti se scrivo questo direttamente nella pagina, il sortable funziona.
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Re: [AJAX+Scriptaculous] Aggiornare la lista

Postdi pjfry » 15/09/06 08:32

Triumph Of Steel ha scritto:secondo me la sortable.create non funziona perchè si trova all'inizio il div "item_list" vuoto.
c'è modo di richiamare la sortable dopo aver richiamato (e quindi riempito) la lista?

c'è uno qui vicino che ci lavora e parla sempre di timeout, forse devi aggiungere un ritardo prima di chiamare la sortable? :undecided:
Avatar utente
pjfry
Moderatore
 
Post: 8240
Iscritto il: 19/11/02 17:52
Località: terni

Postdi Triumph Of Steel » 15/09/06 11:31

allora.. penso di aver capito, e se ho capito mi sa che non si può fare :aaah

Sortable.Create funziona solo se ci sono "fisicamente" i div della lista nella pagina generata.
Quindi, se io ho
Codice: Seleziona tutto
<div id="items">
      <div id="item_1"> - 1 - </div>
      <div id="item_2"> - 2 - </div>
      <div id="item_3"> - 3 - </div>
</div>
<script>
Sortable.Create('items');
</script>

funziona benissimo.

Ma se io ho:
Codice: Seleziona tutto
<div id="items"></div>
<script>
// popola la lista attraverso AJAX
// Ajax.Updater(div_id_dove_scrivere_output,url_dove_prendere_output)
new Ajax.Updater('items', 'response.php?a=items');
// crea la sortable
Sortable.Create('items');
</script>

non funziona, perchè il codice sorgente della pagina, NON ha la lista nel div, perchè viene popolato dall'AJAX.

L'unico modo per farlo funzionare è scrivere, appunto, i div.
Questo non è un problema, lo posso fare.
Il problema si pone se dovessi dare la possibilità di aggiungere una voce alla lista.
Aggiungendo una voce alla lista, la lista si dovrebbe aggiornare con la nuova voce, e ricreare la Sortable. Questo sempre usando AJAX e quindi non aggiornare tutta la pagina.
Avatar utente
Triumph Of Steel
Moderatore
 
Post: 7852
Iscritto il: 22/08/01 01:00

Postdi Mone » 05/10/06 16:39

A qanto ho capito tu chiami la sorttable.create giusto dopo aver fatto la chiamata AJAX giusto?

S'è così e ho capito il problema ci ha visto giusto pjfry, hai bisogno di farlo dopo. Dopo quando? Quando il browser ha preparato e appeso gli oggetti DOM al tuo div. Se esegui la tua sortable.create giusto dopo aver riempito l'innerHTML del tuo div non dovresti avere problemi.

Per quanto riguarda l'uso a runtime immagino (non avendo mai usato sortable di scriptaculous) che basti che esegui sempre le cose in ordine e quindi eviti che il metodo di scriptaculous trovi il div vuoto.
Avatar utente
Mone
Utente Senior
 
Post: 343
Iscritto il: 21/10/03 19:44
Località: Zion


Torna a Programmazione


Topic correlati a "[AJAX+Scriptaculous] Aggiornare la lista":


Chi c’è in linea

Visitano il forum: Nessuno e 4 ospiti