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.
OriginalL'auteur drago | 2013-01-16
Vous devez vous connecter pour publier un commentaire.
Vous n'avez pas besoin de le faire via ajax. La page ne sera pas de redirection pour les téléchargements de fichiers.
de la fenêtre.emplacement.href = "/ControllerName/DownloadAsCSV?json=" + jsonStr; a fait le tour pour moi
OriginalL'auteur James Kleeh
Je suppose que la propriété de l'url doit être fixé comme vos citations sont entrés en collision.
Essayer avec:
Pourquoi mon nom de fichier n'est pas
tiketi.csv
mais un nom aléatoire?faisait partie de la question posée, vous ne savez pas ce que vous demandez ici?
OriginalL'auteur lucke84
Autant que je sache, il n'est pas possible de déclencher fichier-téléchargements via AJAX.
Au lieu de cela vous pouvez faire quelque chose comme ceci (par exemple avec jQuery):
Vous pouvez avoir des problèmes parce que c'est une demande: "de sécurité" ou trop d'arguments.
Mais en normal, il devrait y avoir aucun problème.
OriginalL'auteur Martin L.
Je suis un peu en retard sur celui-ci, mais trébuché sur elle de faire de la recherche. Cette solution est un peu plus longue et bricolé à partir de diverses questions répondues ici. Je pense que c'est une réponse directe à cette question et j'ai travailler dans une application.
La première fonction est un standard de l'appel ajax pour obtenir le tableau de données à partir d'un backend d'appel. La prochaine étape est de créer le fichier csv. La deuxième ligne appelle une troisième fonction que le format du fichier csv. La deuxième fonction se déplace sur à partir du fichier csv création de et enfin crée un lien dynamique qui est ajouté au dom et cliqué pour le téléchargement. Semble la plus chemin de ronde, mais fonctionne avec la norme appel ajax vers le serveur cible.
OriginalL'auteur sixstring