6

如何在 IE 上完成这项工作?这在 IE 上不起作用,IE 浏览器不支持 new FormData() api,在 IE 中是否有其他等效于 new FormData() 的 api?

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);  
    }
});
4

4 回答 4

5

最好使用 jquery form 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;
    });
于 2013-07-01T11:34:22.320 回答
4

实际上,我对我的代码进行了更改,以便能够在所有其他浏览器中使用 $.ajax,并且只是为这样的 IE 浏览器制作了一个 iframe。

邮件程序.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]>

表单.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>

就我而言,form-exec.php 是我的 PHPmailer 发件人!

于 2014-01-18T19:43:26.723 回答
1

AFAIK 仅在 IE9+ 中是可能的。要上传文件'ajax like',你应该使用 iframe 技巧。我在实现它时使用它作为源:

http://ramui.com/articles/ajax-file-upload-using-iframe.html

于 2013-04-02T05:32:26.547 回答
-3

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

        var FD = $('form').serialize();
于 2013-04-02T05:33:06.573 回答