2011-05-11 12 views
6

Ho un po 'di enigma. Fondamentalmente sto sviluppando un plugin per WYSIWYG Editor per jQuery specifico per la mia applicazione web. Una delle funzionalità sarà l'inserimento di un tooltip di immagine in linea basato sulle immagini che l'utente ha caricato. Ad esempio:AJAX vs PHP Direttamente in JS

Hello there my name is [i="profile_pic.png"]A. Username[/i] 

La parte che sto avendo un problema con sta, nel definire quali immagini sono disponibili ad un utente, se devo inserire l'array PHP direttamente nel JavaScript modo:

var available_images = "<?=json_encode($User->Profile->images)?>"; 

o per andare su un Ajax GET che restituisce una matrice codificata delle sorgenti di immagini? Penso che il php inline abbia più senso dal momento che rimuove la necessità di una chiamata ajax non necessaria, ma non pensavo che l'inserimento di php inline in javascript fosse una forma terribilmente buona?

Qualche suggerimento?

+0

+1 per una buona domanda. Se lo inserisci in una classe che effettua la chiamata AJAX, la chiamata può essere riutilizzata altrove. Ho creato un livello dati ('data.js') per un progetto e l'ho usato nella mia applicazione. Non sei sicuro di come sia stata progettata la tua app Web ma solo qualcosa su cui riflettere. – pixelbobby

risposta

4

Non c'è niente di sbagliato nell'inserimento dei dati raccolti da PHP in JS, in che modo JS potrebbe ottenere i dati? L'unica ragione per cui dovresti considerare la chiamata AJAX sarebbe, se gli utenti potessero caricare nuove immagini mentre stanno modificando. Ciò significa che le informazioni devono essere aggiornate, il che renderebbe la chiamata AJAX più accattivante rispetto al JSON statico sul caricamento della pagina.

+0

Mi sono appena reso conto che in effetti avrei bisogno della possibilità per gli utenti di aggiungere immagini in modo che la chiamata AJAX sia l'idea migliore in questa istanza. Grazie – Dormouse

4

A meno che l'array non cambi in alcun modo nel tempo di vita della pagina, quindi sputo l'array esattamente come suggerito nel codice snippet. Non c'è alcun vantaggio reale nell'avere una chiamata ajax extra perché la dimensione dell'array che sto indovinando non sarà così grande da incidere sul tempo di caricamento della pagina iniziale.

Se si guardano attorno alle pagine Overflow stack e si fa view-source, fanno questo genere di cose tutto il tempo.

Se la quantità di dati è enorme e forse aggiunge sette o più secondi al tempo di caricamento della pagina, prenderei in considerazione una chiamata Ajax. Almeno la pagina è renderizzata e l'utente ha qualcosa da guardare, nel frattempo puoi avere un'immagine con un throbber con un messaggio di stato che dice caricamento o qualsiasi altra cosa.

Direi anche che vedo un sacco di cose inutili ajax solo per il gusto di farlo. È come l'ottimizzazione prematura, le persone aggiungono complessità per risolvere un problema che non hanno. Inizia in modo semplice come stai facendo, se hai problemi di tempo di risposta lungo la strada con la suddetta pagina, quindi considera quali benefici ajax porteranno sul tavolo.

2

Ottieni sempre la matrice di immagini o solo qualche volta (ad es. In risposta all'azione dell'utente)? Se il primo, direi farlo in linea. Altrimenti fallo come AJAX. lo faccio solo con AJAX se ridurrà il tuo traffico, ecc. Ma se devi sempre farlo, non vedo alcun vantaggio. Non vedo alcun problema nel mixare inline php e javascript, a parte il fatto che devi eseguire il javascript in linea invece che nei file .js esterni che possono essere memorizzati nella cache (o almeno nella parte in cui inserisci la matrice).