Maison > Article > interface Web > Analyse et solutions aux causes d'échec de l'opération de téléchargement de fichier de requête Jquery Ajax
jQuery est en effet un très bon framework JS léger, qui peut nous aider à développer rapidement des applications JS, et dans une certaine mesure, il a changé notre habitude d'écrire du code JavaScript. Cet article se concentre sur l'introduction du téléchargement de fichiers de requête Jquery Ajax. et des solutions aux causes de l'échec des opérations. Les amis qui sont intéressés par l'analyse des causes de l'échec des requêtes ajax devraient apprendre ensemble
jQuery est en effet un très bon framework JS léger qui peut nous aider à développer rapidement une application JS, et dans une certaine mesure, cela a changé notre habitude d'écrire du code JavaScript.
Arrêtez de dire des bêtises et allons droit au but. Analysons d'abord les raisons de l'échec
1 Les raisons de l'échec
C'est à cause de la réponse. . Généralement, le navigateur demandeur traitera la réponse fournie par le serveur, comme la génération de png, le téléchargement de fichiers, etc. Cependant, la requête ajax n'est qu'une requête de « type caractère », c'est-à-dire que le contenu demandé est stocké sous forme de texte. . Le fichier est téléchargé sous forme binaire. Bien que la réponse renvoyée puisse être lue, elle est uniquement lue et ne peut pas être exécutée. Pour parler franchement, js ne peut pas appeler le mécanisme et le programme de traitement de téléchargement du navigateur.
2. Solution
1) Vous pouvez utiliser jquery pour créer un formulaire et le soumettre pour le téléchargement du fichier
var form = $("<form>"); form.attr("style","display:none"); form.attr("target",""); form.attr("method","post"); form.attr("action",rootPath + "T_academic_essay/DownloadZipFile.do"); var input1 = $("<input>"); input1.attr("type","hidden"); input1.attr("name","strZipPath"); input1.attr("value",strZipPath); $("body").append(form); form.append(input1); form.submit(); form.remove();
2) Vous peut utiliser directement une balise pour implémenter le téléchargement de fichiers ;
45ccaae1ac1448cb8f2e3f6e73420ceaCliquez pour télécharger5db79b134e9f6b82c0b36e0489ee08ed
3) Utilisez une iframe cachée ou un nouveau formulaire pour résoudre .
PS : Utilisation de la méthode $.ajax de requête AJAX
Utilisez la méthode $.ajax de jQuery pour contrôler les requêtes AJAX plus en détail. Il exerce un niveau de contrôle précis sur les requêtes AJAX.
Syntaxe de la méthode $.ajax
$.ajax(options)
|
|
Paramètres |
|
options | (object) Une instance d'un objet dont les propriétés définissent les paramètres de cette opération. Voir le tableau ci-dessous pour plus de détails. |
Valeur de retour |
Instance XHR |
options valeur de plage détaillée
Nom |
Type |
Description |
url |
Chaîne |
Adresse URL demandée |
type |
string |
HTTP à utiliser. Généralement POST ou GET. En cas d'omission, la valeur par défaut est GET |
data |
object |
Objet dont les propriétés sont transmises en tant que paramètres de requête à la requête. S'il s'agit d'une requête GET, les données sont transmises en tant que chaîne de requête ; s'il s'agit d'une requête POST, les données sont transmises en tant que corps de la requête. Dans les deux cas, l'encodage de la valeur est géré par la fonction utilitaire $.ajax() |
dataType |
String |
Un mot clé pour identifier le attendu Le type de données qui seront renvoyées dans la réponse. Cette valeur détermine quel traitement ultérieur (le cas échéant) est effectué avant que les données ne soient transmises à la fonction de rappel. Les valeurs valides sont : xml - le texte de la réponse est analysé dans un document XML et le DOM XML résultant est transmis à la fonction de rappel html - le texte de la réponse est transmis au rappel fonction non traitée. Tous les blocs 3f1c4e4b6b16bbbd69b2ee476dc4f83a dans le fragment HTML renvoyé seront évalués json - le texte de la réponse est évalué comme une chaîne JSON et l'objet résultant est transmis à la fonction de rappel jsonp - Semblable à json, sauf qu'il fournit une prise en charge des scripts à distance (en supposant la prise en charge du serveur distant) script - Le texte de la réponse est transmis à la fonction de rappel. Avant qu'une fonction de rappel ne soit appelée, la réponse est traitée comme une ou plusieurs instructions JavaScript texte - Le texte de la réponse est supposé être du texte ordinaire. La ressource serveur est responsable de la définition de l’en-tête de réponse de type de contenu approprié. Si cet attribut est omis, le texte de la réponse est transmis à la fonction de rappel sans aucun traitement ni évaluation |
timeout |
Valeur |
Définissez la valeur du délai d'expiration (millisecondes) de la requête Ajax. Si la requête ne se termine pas avant l'expiration du délai d'expiration, la requête est abandonnée et la fonction de rappel d'erreur (si définie) est appelée |
global | Booléen |
Activer ou désactiver le déclenchement des fonctions globales. Ces fonctions peuvent être attachées à des éléments et déclenchées à différents moments ou états lors des appels Ajax. Le déclenchement des fonctions globales est activé par défaut |
contentType |
String |
Le type de contenu à préciser sur la requête. La valeur par défaut est application/x-www-form-urlencoded (identique au type par défaut utilisé pour la soumission du formulaire) |
succès |
Fonction |
Cette fonction est appelée si la réponse à la requête indique un code d'état de réussite. Le corps de la réponse est renvoyé à cette fonction en tant que premier paramètre et est basé sur l'attribut dataType spécifié. Le deuxième paramètre est une chaîne contenant le code d'état - dans ce cas toujours le code d'état de réussite |
erreur |
Fonction |
Cette fonction est appelée si la réponse à la requête renvoie un code d'état d'erreur. Trois arguments sont transmis à cette fonction : l'instance XHR, la chaîne du message d'état (toujours le code d'état d'erreur dans ce cas) et l'objet d'exception renvoyé par l'instance XHR (facultatif) |
complete |
La fonction |
est appelée lorsque la requête est terminée. Deux arguments sont transmis : l'instance XHR et la chaîne du message d'état (code d'état de réussite ou code d'état d'erreur). Si la fonction de rappel de réussite ou d'erreur est également spécifiée, cette fonction est appelée après que la fonction de rappel de réussite ou d'erreur soit appelée |
beforeSend |
La fonction |
est appelée avant de faire la requête. Cette fonction reçoit une instance XHR et peut être utilisée pour définir des en-têtes personnalisés ou effectuer d'autres opérations de pré-requête |
async > Boolean |
Si false est spécifié, la demande est soumise comme une demande synchrone. Par défaut, les requêtes sont asynchrones | |
Booléenne | S'il est défini sur false, il empêche le traitement des données transmises au format codé en URL. Par défaut, les données sont traitées au format codé URL (applicable aux requêtes de type application/x-www-form-urlencoded) | |
Booléen | Si défini sur true, uniquement si le contenu de la réponse n'a pas changé depuis la dernière requête (selon l'en-tête de l'indicateur Last-Modified) pour permettre à la demande d'aboutir. En cas d'omission, aucune vérification d'en-tête n'est effectuée |
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!