Télécharger le fichier de l'Ajax (en quelque sorte)

J'ai cet appel ajax dans mon GSP:

$.ajax({
    url: '${request.contextPath + '/Ticket/passAll'}',
    type: 'POST',
    data: data,
    success: function() {
        alert("Success");
    }
});

C'est le bloc de code de mon action de contrôleur:

response.setHeader("Content-disposition", "attachment; filename=sample.csv")
response.contentType = "application/vnd.ms-excel"

def outs = response.outputStream
def cols = [:]

tickets.each() {
    outs << it.ticketNo + ";" + it.subject
    outs << "\n"
}

outs.flush()
outs.close()

- Je obtenir la liste des tickets à partir de données que je passe de la vue via $.Ajax méthode. Que j'format de données au format CSV et que je veux l'exportation de données en tant que fichier CSV mais rien ne se passe. Les données sont envoyer au client, mais il n'existe pas de fichier à télécharger comme content-disposition n'est pas bien formé. Ce qui me manque?
J'ai essayé de faire quelque chose comme:

$.ajax({
    url: '${request.contextPath + '/Ticket/passAll'}',
    type: 'POST',
    data: aoData,
    dataType: 'text',
    success: function(result) {
        var uri = 'data:application/csv;charset=UTF-8,' + encodeURIComponent(result);
        window.open(uri, 'tiketi.csv');
    }
});

et au contrôleur-je générer de la plaine de la chaîne, mais de cette façon, j'obtiens un fichier sans l'extension qui est inacceptable.

Comment puis-je y parvenir? Merci.

Je te suggère plutôt de créer un iframe masqué/la forme et l'affichage à elle, de cette façon quand votre serveur renvoie le csv, le téléchargement va commencer comme d'habitude.

OriginalL'auteur drago | 2013-01-16