автоматическая загрузка файла, отправка с использованием формы jquery, выдает ошибку отказа в доступе в IE

Я использую форму jquery для загрузки изображения без обновления страницы. Ниже приведена html-разметка:

    <a href="javascript:void(0);" onclick="UpdateImage();"> 
<img src="@_fullImgPath" name="img-uploader" alt="" title="" /></a>

    @using (Html.BeginForm("UpdateImage", "Profile", FormMethod.Post, new { id = "img-file-upload-form", @class = "form", autocomplete = "off", enctype = "multipart/form-data" }))
    {
        @Html.Hidden("UpdateImageId")
        <input type="file" name="file" id="file" />
    }
    <script language="javascript" type="text/javascript">   
     $(function () {
        $("#img-file-upload-form").ajaxForm({
            iframe: true,
            dataType: "json",
            beforeSubmit: function () {
            },
            success: function (result) {
                alert('done');
            },
            error: function (xhr, textStatus, errorThrown) {
                alert('error');
            }
        });

        $("#file").change(function () {
             $("#img-file-upload-form").submit();
        });
    });

     function UpdateImage(id) {
            $("input[id=file]").click();
        }

    </script>

Это отлично работает в Firefox и Chrome, но в IE 8 и 9 выдает ошибку отказа в доступе. Есть ли какое-нибудь решение для этого? Или есть альтернатива загрузке изображения без обновления страницы?


person Prasad    schedule 18.12.2012    source источник
comment
Вы придумали, как это исправить? Я предполагаю, что вы добавили новую кнопку для отправки вместо того, чтобы отправлять ее программно, верно?   -  person Oana-Elena Danescu    schedule 29.04.2020


Ответы (1)


То, что вы пытаетесь сохранить, это сохранить изображение при отправке формы. Отправка формы приведет к обратной передаче веб-страницы, поскольку я предполагаю, что ваша разметка представляет собой MVC-3 Razor.

Я бы предложил вам использовать следующее для запроса ajax.

   var submitForm=new Form();

Добавьте свое изображение в форму управления

$.ajax({
    url:'webpage or your method in controller',
    type:'POST/GET',
    data:submitForm,
    dataType:'',
    ContentType:'',
    beforeSend:function(){},
    complete:function(){}, .....
});

для создания тега динамической формы вы можете обратиться к следующей ссылке
How создать форму динамически с помощью JavaScript?

person Hiren Desai    schedule 18.12.2012
comment
чтобы избежать обновления страницы, я использую ajaxForm. Он позаботится о реализации ajax. Код, который я использую, работает, кроме IE. - person Prasad; 18.12.2012