2010-09-13 8 views
0

J'utilise $ajax({ type:"post", url:"/whatever/" }) pour accéder à mon serveur qui fonctionne bien. Le problème est que la réponse n'est pas évaluée comme j'en ai besoin. Sur certains occations le serveur renvoie une chaîne factice (« x ») qui peut être ignoré dans le navigateur, mais à d'autres occasions mon serveur renvoie un fichier spécial en pièce jointe:Jquery ajax fonction et le téléchargement de fichiers

mimetype application/x-my-special-type 
Content-Disposition attachment; filename=myname.ext 
.... 

Mais le navigateur (I Je suis seulement intéressé par Google Chrome/Chromium - c'est une chose intranet) ne montre pas la fenêtre de téléchargement. (L'appel de l'URL "/ whatever /" directement dans la barre d'adresse affiche en fait la fenêtre contextuelle de téléchargement pour enregistrer le fichier.)

Comment puis-je persuader jQuery d'afficher la fenêtre contextuelle de téléchargement habituelle?

Répondre

2

Envoyez l'utilisateur à l'URL en définissant window.location.href ou en créant une liaison directe avec le fichier. N'utilisez pas AJAX pour cela, car il est uniquement utilisé pour récupérer des données dans les variables/insérer dans DOM. Vous devrez probablement penser à une manière différente de représenter le cas de non-réponse. Peut-être que la partie AJAX pourrait être utilisée pour établir si un fichier est disponible ou non, et la redirection se produirait si la réponse AJAX indique qu'un fichier est disponible.

+0

J'avais peur de lire ça. Semble que je dois envoyer la requête ajax, vérifier la réponse du serveur, et si elle contient quelque chose comme "download_waiting" puis faire le window.location.href pour réellement faire le téléchargement :( – mawimawi

+0

Effectivement .Mise à jour ma réponse pour dire exactement que – spender

+0

La réponse ne peut probablement pas être gérée par une page 404 ou une page de type similaire "Le fichier demandé n'a pas été trouvé". –