2010-09-26 5 views
4

J'utilise jQuery Form plugin dans mon projet MVC pour le téléchargement d'images.Télécharger l'image avec le plugin JQuery ne fonctionne pas dans IE8

Le téléchargement d'image fonctionne parfaitement dans Chrome et Firefox, mais quand il vient à IE 8.

Pas comme Chrome, au lieu de retourner les données JSON qui est ensuite consommée par le rappel post-présenter, dans Internet Explorer 8, il retourne un fichier txt et vous demander si vous souhaitez télécharger. et à côté du fichier txt, ce sont les données json.

ne pouvait pas comprendre où ai-je fait mal, des idées?

merci d'avance.

code est placé dans un fichier js seperated: upload.js

(function ($) { 
ImageUploader = function (o) { 

     var options = { 


      success: showResponse, // post-submit callback 

      url: "/Image/ImageUpload",   // override for form's 'action' attribute 
      type:  "post",  // 'get' or 'post', override for form's 'method' attribute 
      dataType: 'json',  // 'xml', 'script', or 'json' (expected server response type) 
      clearForm: true  // clear all form fields after successful submit 

     }; 

     o.ajaxForm(options); 

     $("input#file").change(function() { 
      o.submit(); 
     }); 

// post-submit callback 
     function showResponse(responseText, statusText, xhr, $form) { 
     .... 
    } 
}; 
})(jQuery); 

sur la vue de la page:

$(document).ready(function() { 
ImageUploader($("#ajaxUploadForm")); 
}); 

Répondre

2

Eh bien, après un pénible creuser à travers l'Internet j'ai finalement obtenu ma solution , plus qu'heureux de le partager:

le plugin jQuery Form n'a aucun problème. Le problème est le buggy IE 8 ne pouvait pas gérer assez bien le callback Json. même que vous avez spécifié le type comme "application/json"

Solution: modifier le type de contenu de "application/json" à "text/plain" dans MVC JsonResult

return Json(newImage, "text/plain", JsonRequestBehavior.AllowGet); 
+0

Je pense que vous avez pour spécifier dans l'appel ajax Accepter le paramètre d'en-tête à text/javascript (comme je peux me souvenir maintenant). Ce n'est pas un bug IE 8 mais une fonctionnalité :) Le type de contenu indique au serveur ce que vous envoyez, mais vous devez lui dire ce que vous attendez en retour –

Questions connexes