J'ai la fonction suivante qui extrait des données d'une base de données. L'appel ajax fonctionne correctement. Comment puis-je envoyer à l'utilisateur les données délimitées par des tabulations dans ma fonction de réussite ? La définition du type de contexte à "application/vnd.ms-excel" n'a pas fonctionné. L'alerte en cas de succès affiche les données correctement formatées.
function SendToExcel() {
$.ajax({
type: "GET",
url: "/Search.aspx",
contentType: "application/vnd.ms-excel",
dataType: "text",
data: "{id: '" + "asdf" + "'}",
success: function(data) {
alert(data);
},
error: function (jqXHR, textStatus, errorThrown) {
alert(jqXHR.responseText);
}});
}
Je ne veux pas afficher les données dans le navigateur, je veux les envoyer à Excel.
EDIT : J'ai trouvé un moyen de faire ce que je voulais. Au lieu de rediriger les utilisateurs vers une nouvelle page qui les inviterait à enregistrer/ouvrir un fichier Excel, j'ai ouvert la page à l'intérieur d'une iframe cachée. Ainsi, les utilisateurs cliquent sur un bouton et sont invités à enregistrer/ouvrir un fichier Excel. Aucune redirection de page. S'agit-il d'Ajax ? Non, mais cela résout le vrai problème que j'avais.
Voici la fonction que j'appelle lors du clic sur le bouton :
function SendToExcel() {
var dataString = 'type=excel' +
'&Number=' + $('#txtNumber').val() +
'&Reference=' + $('#txtReference').val()
$("#sltCTPick option").each(function (i) {
dataString = dataString + '&Columns=' + this.value;
});
top.iExcelHelper.location.href = "/Reports/JobSearchResults.aspx?" + dataString;;
}