2013-04-02 16 views
5

Jak mogę to zrobić w IE? To nie zadziała na IE, nowe apki FormData() nie są obsługiwane przez przeglądarki IE, czy jest jakikolwiek inny odpowiednik nowego FormData() w IE?jak wykonać nową funkcję FormData() w przeglądarkach IE?

var fd = new FormData(); 
fd.append("userfile", $("#userfile")[0].files[0]); 

$.ajax({ 
    url : '/user/ajax_upload/', 
    type: 'POST', 
    contentType:false, 
    cache: false, 
    data: fd, 
    processData: false, 
    beforeSend :function(){ 
    }, 
    success : function(data) { 
     $('#popupbox').html(data); 
    } 
}); 
+0

to pomoże :: http://stackoverflow.com/questions/10852446/fallback-for-formdata-in-ie-8-9 –

Odpowiedz

5

jej lepiej użyć formularza jquery Js nadsyłania zdjęć na AJAX. Uważam, że to lepsze niż FormData()

<script type="text/javascript" src="/js/jquery.form.js"></script> 

function update_professional_details(){ 
    var options = { 
       url  : '/validateform/personal', 
       type : $("#personal_edit_form").attr('method'), 
       dataType: 'json', 
       success:function(data) { 
        var msg = data.msg; 
        if(data.status == 'success'){ 
         $("#msg_data").html("Updated successfully, redirecting...") 
         $("#personal_edit_form").submit(); 
        }else{ 
         $('p[class$="_error2"]').html(''); 
         var msg = data.msg; 
         $.each(msg, function(k, v) { 
          $('.'+k+'_error2').html(v); 
         }); 
        } 
       }, 
      }; 
      $('#personal_edit_form').ajaxSubmit(options); 
       return false; 
     } 

    $('#updatepersonal').click(function(){ 
     update_professional_details(); 
      return false; 
    }); 
+2

Czy możesz rozwinąć na _found it better_? –

+0

Inteligentne pieniądze mówią, że to tylko eufemizm "w ten sposób działał, inaczej nie, nie wiem dlaczego", ponieważ tak często jest ... – katzenhut

-3

Najwyraźniej FormData nie jest obsługiwana w IE. Być może jednak być w stanie wykorzystać serialize jQuery jest tak:

 var FD = $('form').serialize(); 
4

Właściwie zrobiłem zmiany do mojego kodu, aby móc korzystać z $ .ajax we wszystkich innych przeglądarek i po prostu się iframe dla przeglądarek IE, takich jak ten.

mailer.php

<!--[if IE]> 
    <iframe src="form.php"></iframe> 
<![endif]--> 

<![if !IE]> 
<script> 
    $(document).ready(function() { 
     //Program a custom submit function for the form 
     $("#form").submit(function(event){ 

      //disable the default form submission 
      event.preventDefault(); 

      //grab all form data 
      var formData = new FormData($(this)[0]); 

      $.ajax({ 
      url: $("#form").attr('action'), 
      type: 'POST', 
      data: formData, 
      async: false, 
      cache: false, 
      contentType: false, 
      processData: false, 
      success: function (returndata) { 
       alert(returndata); 
      } 
      }); 

      return false; 
     }); 
    }); 
</script> 

<?php include_once ('form.php'); ?> 

<div id="email-success"></div> 
<![endif]> 

form.php

<form id="form" action="form-exec.php" target="_self" method="post" enctype="multipart/form-data"> 
    <input type="text" name="email-to" value="" /> 
    <input type="text" name="email-subject" value="" /> 
    <input type="text" name="email-message" value="" /> 
    <input type="file" name="file" /> 
    <input type="file" name="file2" /> 
    <button type="submit" name="email-send">Skicka</button> 
</form> 

i forma-exec.php jest w moim przypadku, moja PHPMailer nadawca!

Powiązane problemy