如何在IE8中使用Ajax将图像发送到.net Web Service?

时间:2014-08-06 09:12:31

标签: javascript jquery ajax

以下帖子与:How to send image to PHP file using Ajax?

有关

我按照上面的帖子设法让它工作,但它无法在IE8上工作。

有没有办法让这个工作在ie8 +?

这是我的代码:

$("form[name='uploader']").submit(function(e) {
    var formData = new FormData($(this)[0]);

    $.ajax({
        url: dotnetpage,
        type: "POST",
        data: formData,
        async: false,
        success: function (msg) {
            $('.js-ugc-image').attr('src', msg);
        },
        cache: false,
        contentType: false,
        processData: false
    });

    e.preventDefault();
});

2 个答案:

答案 0 :(得分:1)

IE 8没有formdata,您可以使用隐藏的iframe并发布并阅读结果。 我使用了类似这样的技术 克隆表单,将原始表单移动到隐藏的iframe(这需要完成,因为您无法在IE上克隆或设置输入类型文件值),然后提交并读取提交的结果。

像这样的东西,这是我之前使用过的代码:

var $form = $('your form');//GET YOUR FORM

//Create Hidden iframe
var _hiddenIframe = $('<iframe id="_hiddenframe" style="display:none;"></iframe>');

//Create Copy Form and add the attributes of the original
var _copyForm = $('<form id="_copyForm" name="_copyForm" style="">');
_copyForm.attr({'method':$form.attr('method'),'action':$form.attr('action'), 'enctype':$form.attr('enctype')});             

//Get original fields
$original = $form.children('*');

//Clone and append to form
$original.clone(true).appendTo($form);

//send the original fields to hidden form
$original.appendTo(_copyForm);  

//Add the iframe to the body
_hiddenIframe.appendTo('body');

//Add the form to the hidden iframe 
_copyForm.appendTo(_hiddenIframe.contents().find('body'));

var $r; 

//submit the form
_copyForm.submit();

//after it reloaded(after post)
_hiddenIframe.on('load',function(){ 
    //read result (maybe a json??)
    $r = $.parseJSON(_hiddenIframe.contents().find('body').text());
    //Do something with the result
    if($r.result=='ok'){
        //Do Something if ok
    }           
    else{
        //Do Something if error
    }
}); 

答案 1 :(得分:0)

不,抱歉,IE8不支持FormData对象。 (见http://caniuse.com/#search=formdata

您可以做的是将<input type='file >标记嵌入到单独的表单中,然后使用jQuery提交。