e comunque ho trovato almeno una occasione dove sono dovuto tornare indietro all'uso dell'iframe nascosto, dato che con ajax non risolvevo![]()
e comunque ho trovato almeno una occasione dove sono dovuto tornare indietro all'uso dell'iframe nascosto, dato che con ajax non risolvevo![]()
Pietro
quale occasione? :master:Originariamente inviato da pietro09
e comunque ho trovato almeno una occasione dove sono dovuto tornare indietro all'uso dell'iframe nascosto, dato che con ajax non risolvevo![]()
in ufficio l'iframe lo usiamo solo per correggere i problemi di IE6 con le SELECT e lo zIndex mancante ... infatti mi sto sbattendo per creare componenti DropDown e List ad hoc per il sistema per eliminarli dalla faccia della terra![]()
tu che problemi hai che ti costringono ad usare gli iframe?
Originariamente inviato da andr3a
quale occasione? :master:
in ufficio l'iframe lo usiamo solo per correggere i problemi di IE6 con le SELECT e lo zIndex mancante ... infatti mi sto sbattendo per creare componenti DropDown e List ad hoc per il sistema per eliminarli dalla faccia della terra![]()
tu che problemi hai che ti costringono ad usare gli iframe?
spero che Jarno ci scusi se abusiamo del suo spazio![]()
allora il primo, che però non riguarda ajax è un controllo fatto con asp.net tipo TextSuggest. Il div con la lista che compare sotto il textbox, ho la necessità di farlo apparire sopra un activex (il controllo mappa di Autodesk) e l'unico modo che ho trovato è di metterlo sopra un iframe.
L'altro è un poco più complicato da spiegaree ti prego di avere pazienza.
Ho un controllo, sempre fatto in asp.net, che fa la ricerca progressiva. Questo controllo è composto da un TextBox, Un listBox e soprattutto del codice javascript cablato dentro il controllo.
Allora, se ho la mia pagina, e, per esempio, questo controllo che contiene un elenco di persone, e se aggiorno la tabella database delle persone, sorgente del controllo, con un popup, debbo pure aggiornare il controllo nella pagina madre.
Se voglio aggiornare il controllo senza rileggere la pagina, la via più semplice è ricreare una pagina con quel controllo, buttarla dentro un iframe e, nell'evento load, fare tutte le operazioni javascript per ripristinare la situazione.
Non è che non si possa con ajax, dico solo che con un iframe nascosto si fa prima.
ps. questo è un tipico esempio di come NON DOVREBBE ESSERE SPIEGATA UNA COSA, ma meglio non riesco![]()
Pietro
stesso problema della select ... gli ActiveX stanno sempre in mezzo ai maroniOriginariamente inviato da pietro09
allora il primo, che però non riguarda ajax è un controllo fatto con asp.net tipo TextSuggest. Il div con la lista che compare sotto il textbox, ho la necessità di farlo apparire sopra un activex (il controllo mappa di Autodesk) e l'unico modo che ho trovato è di metterlo sopra un iframe.
Per fortuna che con IE7 questo problema non sussiste ... ma per ora non ci sono molte altre soluzioni (far sparire e riapparire gli activex ad esempio potrebbe essere un'altra ma abbastanza orribile per un utente)
a te serve solo richiamare una pagina ...Originariamente inviato da pietro09
L'altro è un poco più complicato da spiegaree ti prego di avere pazienza.
Ho un controllo, sempre fatto in asp.net, che fa la ricerca progressiva. Questo controllo è composto da un TextBox, Un listBox e soprattutto del codice javascript cablato dentro il controllo.
Allora, se ho la mia pagina, e, per esempio, questo controllo che contiene un elenco di persone, e se aggiorno la tabella database delle persone, sorgente del controllo, con un popup, debbo pure aggiornare il controllo nella pagina madre.
Se voglio aggiornare il controllo senza rileggere la pagina, la via più semplice è ricreare una pagina con quel controllo, buttarla dentro un iframe e, nell'evento load, fare tutte le operazioni javascript per ripristinare la situazione.
Non è che non si possa con ajax, dico solo che con un iframe nascosto si fa prima.
ps. questo è un tipico esempio di come NON DOVREBBE ESSERE SPIEGATA UNA COSA, ma meglio non riesco![]()
lo fai sincrono e dopo questo with aggiorni la situazione in tabella ... o no?codice:with((window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP"))) { open("get", iframeSource, false); send(null); };
Addirittura per aggiornare ti conviene fare una sola richiesta ajax capace di dire al server "aggiorna lo stato" e poi "dammi la nuova situazione" ... insomma, qui l'iframe mi sembra un pò azzardato, ma se funziona ... nemmeno a sbattersi per risolvere![]()
EPILOGO
raga...alla fine sono degradato alla soluzione di Andr3a, con qualche piccola modifica, ed effettivamente non dà problemi
effettivamente il mio approccio non aveva la consapevolezza che le variabili locali ad ogni istanza successiva non vanno ad incidere sulle istanze precedenti ancora aperte... non si finisce mai di imparare
MIA PILLOLA
comunque non credo che la mia soluzione sia da cestinare, per chi ne ha bisogno permette la gestione del timing con un log lato client![]()
PILLOLA DI ANDR3A
ottima, ma ho modificato alcune cose poichè la tua soluzione aveva alcune finezze/"giochetti" logici (come quello dell'if legato al valore 1000) che ad una prima lettura priva di commenti non sono comprensibili; poi ho tolto la ganza idea del parametro fittizio clicked che purtroppo presuppone il passaggio alla funzione del riferimento all'oggetto link; infine te avevi concatenato un po troppi if, io li ho ridotti mettendo:
- FUNZIONE AJAX
--- FUNZIONE sullo STATUS
--- FUNZIONE per il TIMER
--- SEND REQUEST
ovviamente non mi permetto di criticare l'ottimo codice, scrivo solo per rendere pubbliche le nostre varianti
![]()
Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
Inchinatevi difronte al Prof! Nacchio!
A me pare che l'uomo vada avanti con la retromarcia
degradare :master:raga...alla fine sono degradato alla soluzione di Andr3a, con qualche piccola modifica, ed effettivamente non dà problemi![]()
![]()
http://blog.html.it/archivi/2007/06/...javascript.php
:quote:
cosa c'è di nuovo che non sia stato già scritto? :master:![]()
Pietro
sì ...so cosa significa... è solo una metafora per ridere...
grazie per il link !!
Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
Inchinatevi difronte al Prof! Nacchio!
A me pare che l'uomo vada avanti con la retromarcia
Originariamente inviato da Jarno
sì ...so cosa significa... è solo una metafora per ridere...
grazie per il link !!
:master: no, non vorrei essere fraintesoavevo visto il link prima del tuo post e mi sono fatto (con sconcerto) quella domanda: ho provato qualche cosa e mi sono letteramente perso
![]()
E fra poco arriverà il nuovo asp.net col nuovo visual studio, tutto con ajax![]()
ps. era solo uno sfogo a voce altaCiao
![]()
Pietro
ciao a tutti, stò realizzando una semplice chat basata su ajax+php+mysql da inserire nel mio blog
-l'inserimento dei messaggi avviene tramite una chiamata ajax quando l' utente clicca il pulsante invia
-il refresh dei messaggi inseriti nel db viene fatto attraverso delle chiamate ajax temporizzate tramite
setInterval("refresh()",5000)
-dopo un tot di inattività dell' utente il refresh dei messaggi viene interrotto
la mia domanda è se ci possono essere problemi di chiamate ajax concorrenti , cioè una che si sovrappone all' altra
potete darmi qualche consiglio?
grazie
toglierei setInterval, e metterei setTimeout(): quando scade il timeout di 5000 lo fai ripartite, quando invece fallisce lo fai ripartire subito, quando va a buon fine lo fai ripartire dopo 5000 ...ovviamente ci vuole una gestione del timeout e dell'esito delle richieste (vedi guida Andr3a)
altrimenti potresti lasciare anche il setInterval, ma appunto come dici te si possono sovrapporre chiamate. Tutto funzionerà, tuttavia ci saranno delle "inefficienze". Se come me non hai racchiuso dentro allo scope locale la chiamata ajax, finisce che lanci chiamate nel vuoto. Esteticamente invece potresti avere aggiornamenti che si sovrappongono, quindi inutili, ma che all'utente potrebbero disturbare, ma questo non costituisce un problema tecnico...
![]()
Farmacia di Jarno - le mie pillole: Cookie [#780810], Dom4Php4 [#1123236], Fade [#1139489], getCssProperty [#1152911]
Inchinatevi difronte al Prof! Nacchio!
A me pare che l'uomo vada avanti con la retromarcia