2013-04-02 7 views
5

Wie kann ich dies am IE arbeiten lassen? Dies funktioniert nicht auf IE, neue FormData() api wird nicht von IE-Browsern unterstützt, gibt es eine andere API äquivalent zu neuen FormData() in IE?Wie man neue FormData() Arbeiten an IE-Browsern

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

das wird helfen :: http://stackoverflow.com/questions/10852446/fallback-for-formdata-in-ie-8-9 –

Antwort

5

Es ist besser jquery Form Js für Bilder über Ajax zu verwenden einreichen. Ich fand es besser als 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

Können Sie auf _found it better_ näher ausführen? –

+0

Das kluge Geld sagt, es sei nur ein Euphemismus für "so hat funktioniert, der andere Weg nicht, ich weiß nicht warum", wie es so oft ist ... – katzenhut

-3

Offenbar wird nicht in Formdata IE unterstützt. Sie können jedoch in der Lage, wie so jQuery serialize zu verwenden:

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

Eigentlich i eine Änderung zu meinen Code gemacht Lage sein $ Schnipsel in allen anderen Browsern zu bedienen ist und nur ein iframe für den IE-Browser wie diese.

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> 

und die form exec.php ist, in meinem Fall, mein PHPmailer Absender!