2013-04-02 25 views
5

我如何使这项工作在IE浏览器上? 这不适用于IE浏览器,IE浏览器不支持新的FormData()api,是否有任何其他api等同于新的FormData()在IE中?如何使新的FormData()在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

这将有助于:: http://stackoverflow.com/questions/10852446/fallback-for-formdata-in-ie-8-9 –

回答

5

其更好地使用jquery的表单JS超过AJAX提交的图像。我发现它比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

你能详细说明_发现它better_? –

+0

聪明的钱说它只是一个委婉的说法,“这种方式的工作,其他方式没有,我不知道为什么”,因为它经常是... – katzenhut

-3

显然,FORMDATA不IE支持。您可能,但是,能够使用jQuery的序列化,像这样:

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

其实我做了改动,我的代码,以便能够在所有其他浏览器使用$就和刚才的IE浏览器这样的iframe。

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> 

和表单exec.php是,在我的情况,我的PHPMailer的发送者!

相关问题