Obtenir un fichier téléchargeable avec une requête ajax

Edit: Vous ne savez pas pourquoi cela a été marqué comme un doublon, étant donné que l’original n’a même pas de réponse autre que “utilisez cet outil tiers qui ajoute des éléments d’interface supplémentaires dont vous n’avez probablement pas besoin ou dont vous n’avez pas besoin” J’utilisais ajax parce que je devais envoyer un tableau d’identifiants et je ne savais pas comment le faire autrement qu’avec ajax. J’ai compris ce que je devais faire, alors je n’ai plus vraiment besoin d’aide pour ce billet, mais ce n’est certainement pas une question en double, et même si c’était le cas, il n’y a pas de vraie réponse à l’original.

J’ai essayé d’obtenir un lien permettant de télécharger un fichier généré par mon script d’exportation. Cependant, je ne peux pas l’obtenir pour obtenir le fichier retourné. C’est la fonction JS que j’utilise depuis …

function sendSelected(path) { var ids; ids = jQuery("#grid").jqGrid('getGridParam', 'selarrrow'); if (ids.length > 0) { alert(""); $.ajax({ url: path, data: { ids: ids }, type: "POST", traditional: true, }); } else { alert("You have not selected any rows."); return false; } } 

et puis voici la partie HTML …

   jQuery("#export").click(function () { sendSelected("/Forms/Export"); });  

Tout cela fonctionne bien, sauf que mon exportateur se termine par document.Save(response, "file.pdf"); et la page ne le reçoit pas. Si je le change en document.Save(response, @"C:\some\location\to\save\at.pdf"); le fichier est créé ici, donc je sais que ce n’est pas un problème pour le créer. De même, si je crée simplement un formulaire standard qui pointe vers / Formulaires / Exporter, puis saisis manuellement les ID, je peux télécharger le fichier correctement, mais cela ne fonctionne pas pour mon implémentation.

$ .ajax ne fonctionnera pas, j’essayais de faire quelque chose de similaire récemment mais j’ai fini avec une solution différente. Ayez simplement un formulaire avec une entrée masquée, puis dans votre sendSelected, définissez le champ et l’action, puis soumettez le formulaire.

  $("#hiddenField").val(data); $("#yourForm").attr("action", path) $("#yourForm").submit();