Extjs 4 téléchargement d'un fichier à travers un appel ajax

Le problème est très simple: j'ai télécharger un fichier quand je soumettre un formulaire, c'est un appel ajax lorsque le formulaire est soumis, ce qui me permet de construire un fichier avec les données de la forme, côté serveur et envoyer un lien à une alerte. Le fait est que mon patron souhaitez que le fichier soit téléchargé directement et non par l'intermédiaire d'un lien dans un message d'alerte. J'ai donc assurez-vous que le fichier est disponible côté serveur par le biais de la tornade(web):

        self.set_header('Content-Type', 'application/octet-stream')
        self.set_header('Content-Disposition', 'attachment; filename=clients_counter.zip')
        with open("static/clients_counter.zip", 'r') as f:
            while True:
                data = f.read()
                if not data:
                    break
        self.write(data)
        self.finish()

Du côté serveur, le code semble fonctionner très bien, mais le côté client (extjs4.1) c'est vraiment un cauchemar. C'est ainsi que mon appel ajax dirait que maintenant, et ça ne fonctionne pas:

Ext.Ajax.request({
method : "GET",
url : 'http://whatever.com/count?client='+client+'&start='+start+'&end='+end,
timeout : 30000,
success :
         function (response) {
    //Ext.Msg.alert(response.responseText);
            desktop.getWindow('count-win').doClose();
            return response;
       }//handler,
     failure : 
     function(response) {
    alert("Wrong request");
    }});
Ce n'est pas Ext JS; en fait, aucun navigateur va initier le téléchargement du fichier off un appel Ajax. Le standard de la façon de le faire est de créer une forme invisible et de le soumettre.

OriginalL'auteur softwareplay | 2013-12-10