Je crée un téléchargement frontend pour une application avec Appengine Backend.
Ce que je veux faire est une solution de téléchargement de fichier, et je ne veux pas utiliser PLUPLOAD ou ce type de solutions prêtes à l'emploi. P >
J'ai essentiellement soumis les images sur un iframe, puis mettez une couverture pendant le téléchargement. Ensuite, après avoir fini, j'ai effectué un appel Ajax pour obtenir les ID d'image pour que la vue suivante soit rendue. Cependant, le rendu est toujours appelé avant que le téléchargement soit terminé, je ne reçois aucun ID d'image du backend. Canhelp? p>
Voici mon code pour le téléchargement p> "l'app.views.imageselect.Render (item_id) est ci-dessous: p> < PRE> XXX PRE> Je ne veux pas utiliser la fonction de sécurité car elle ne sera pas flexible en fonction de la vitesse de connexion. Toute aide sera appréciée :) p> p>
3 Réponses :
Essentiellement, votre question se résume à cette question: vous voulez attendre de rendre votre appel AJAX au serveur jusqu'à ce que les données que vous demandez sont disponibles. Obtenir des notifications du serveur est délicate (selon la manière dont votre backend est implémentée), la meilleure solution à votre problème est donc probablement de simplement rendre l'appel Ajax périodiquement (dire, une fois par seconde) jusqu'à obtenir une réponse réussie du serveur.
Voici un certain code qui devrait faire cela: p>
Élégant, ne savait pas que vous pourriez nommer vos blocs «faire».
Qu'est-ce qui vous manque, c'est une sorte de rappel du Ceci est fondé sur l'idée que appelant "soumettre" met immédiatement la cible iframe dans non Etat prêt, qui semble raisonnable, mais je le testerais. Une fois que cela a fini de charger l'autre option que j'ai vue autour est d'avoir la page que les charges IFrame rappellent dans sa fenêtre parent (niveau supérieur). En JS, quelque chose comme: p> ou, si vous souhaitez utiliser des événements liés: p> où, bien sûr , vous avez mis en place un événement téléchargé-complet sur l'objet de document de niveau supérieur. P> p> $ ('# INPUT-INPUT-3'). Soumettre () code> appel. Je pense em> ce qui suit fonctionnerait (pardon mon mauvais coffescript):
Si vous ne ciblez que des navigateurs modernes, les formdata de XHR2 peuvent permettre une approche très simple et élégante. P>
Le concept est: p>
Cette approche fonctionne avec le dernier Firefox, chrome, safari - http://caniuse.com/xhr2 . P>
Voir ce post pour plus de détails: Envoyer MultiPart / formdata avec jQuery.ajax A > p>
"Je ne veux pas utiliser PLUPLOAD ou ce type de solutions prêtes à l'emploi" - pourquoi pas?
Tout simplement parce que je veux savoir ce qui se passe derrière elle. Plus tard, je peux peut-être l'utiliser :)
En outre, qui sait que je peux améliorer les solutions disponibles