Maison  >  Article  >  interface Web  >  Explication détaillée de l'implémentation Ajax de la fonction de téléchargement de fichiers

Explication détaillée de l'implémentation Ajax de la fonction de téléchargement de fichiers

php中世界最好的语言
php中世界最好的语言original
2018-04-24 17:09:143788parcourir

Cette fois, je vais vous apporter une explication détaillée de l'implémentation Ajax de la fonction téléchargement de fichiers Quelles sont les précautions pour l'implémentation Ajax de la fonction de téléchargement de fichiers. est un cas pratique, jetons-y un coup d'œil.

Les types de retour de la fonction ajax de JQuery sont uniquement des types xml, text, json, html et autres, et il n'y a pas de type "stream", donc si nous voulons implémenter le téléchargement ajax, nous ne pouvons pas utiliser l'ajax correspondant fonction pour télécharger des fichiers. Mais vous pouvez utiliser js pour générer un formulaire, utiliser ce formulaire pour soumettre des paramètres et renvoyer des données de type « stream ». Pendant le processus de mise en œuvre, la page n'a pas été actualisée.

1. En utilisant ajax, le type de valeur de retour d'ajax est de type json, text, html, xml, ou on peut dire que l'envoi et la réception d'ajax ne peuvent être qu'une chaîneune chaîne et ne peut pas être diffusé en continu, le téléchargement de fichiers ne peut donc pas être réalisé et des conflits de réponses se produiront en cas d'utilisation forcée. Si vous devez utiliser ajax, vous ne pouvez obtenir l'URL liée au fichier généré qu'en renvoyant la valeur. Créez ensuite une iframe dans la fonction de rappel et définissez sa valeur src sur l'URL du fichier, ou une URL de traitement pour le flux de génération de fichier. De cette façon, le fichier peut être téléchargé sans actualiser la page.

2. Sans utiliser ajax, cela peut être réalisé en exécutant dynamiquement dom ou en créant une iframe ou un formulaire. La page ne sera pas actualisée lors du téléchargement du fichier. Le src de l'iframe peut être l'url de l'adresse du fichier à télécharger. Il se peut également que l'URL de traitement du flux soit téléchargée via la sortie du flux de réponse. Lorsque le DOM est exploité de manière dynamique, le téléchargement du fichier est implémenté sans. rafraîchir la page. Pour implémenter une barre de progression lors du téléchargement, vous pouvez créer une tâche planifiée, envoyer des requêtes en arrière-plan à certains intervalles et obtenir la progression du téléchargement des fichiers via des objets publics, tels qu'une session.

var title=$("input[name='gjzSelect']").val();
var rqTime = $(".ui-datepicker-time").val();
var ddd= rqTime.split("一");
var startTime=ddd[];
var endTime=ddd[];
var form = $("<form>"); //定义一个form表单
form.attr('style', 'display:none'); //在form表单中添加查询参数
form.attr('target', '');
form.attr('method', 'post');
form.attr('action', "<%=basePath%>jiankong/madeExcel.do");
var input = $('<input>');
input.attr('type', 'hidden');
input.attr('name', 'startTime');
input.attr('value', startTime);
var input = $('<input>');
input.attr('type', 'hidden');
input.attr('name', 'endTime');
input.attr('value', endTime);
var input = $('<input>');
input.attr('type', 'hidden');
input.attr('name', 'title');
input.attr('value', title);
$('body').append(form); //将表单放置在web中
form.append(input); //将查询参数控件提交到表单上
form.append(input);
form.append(input);
form.submit();
<%-- 
$.ajax({
url:'<%=basePath%>jiankong/madeExcel.do',
cache:false,
data:{
'startTime':startTime,
'endTime':endTime,
'title' :title
},
error:function (e){
alert("导出失败!");
},
success:function (data){
alert("导出成功!");
} 
}); 
--%>

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le site Web chinois de php !

Lecture recommandée :

Ajustement de l'ordre d'exécution ajax dans jquery

Explication détaillée des exemples Ajax et $.ajax

Comment faire une requête ajax pour la page de surveillance avec jQuery

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn