Как вы загружаете файл (ы) с AJAX

-4

В настоящее время я пытаюсь загрузить файл через форму, которую я создал, используя jQuery. Это то, что я пытаюсь сделать:

    function ajax_upload(){
    var formData = new FormData($('form#userform'));
        $.ajax({
        url: location.protocol + "//" + location.host + "/profile/uploadPicture",
        dataType: 'json',
        data: formData,
        type: 'post',
        success: function(data, status){
        if (data.status == 'error') {
            $('#error').html(data.msg);
        }
        else {
            var filename = location.protocol + "//" + location.host + "/data/profiles/" + data.msg;

            $('input#filename').val(filename);
            close_upload_form();
            pop_profilechanger(filename);

        }
    }
});
    return false;

}

форма появляется для публикации на бэкэнд, но при попытке вернуть имя файла из загруженного файла в объект JSON, например: echo json_encode (array ('status' => $ status, 'msg' => $ msg));

Здесь что-то не так? пожалуйста, скажите мне

  • 1
    В то время как вы не сказали, в чем проблема, мы должны держать вещи в рамках jQuery для всех намерений и целей. var formData = new FormData($('form#userform')); должно быть var formData = $('form#userform').serialize() - это гарантирует, что данные будут отправлены на сервер в виде строки вроде name=george&[email protected]&validated=1
  • 1
    Вы не можете загружать напрямую через javascript как угрозу безопасности, и политики на уровне браузера не позволят этого. Есть обходные пути, включающие вспышку, iframes, шестерни, розетки и другие различные техники. Но в целом, я думаю, что Flash - ваш лучший кандидат. Это также очень вероятно, почему вы не получаете никаких загрузок на работу. Да, форма будет публиковаться, но не вместе с файлом, как вы ожидаете, используя обычные средства AJAX. проверить plupload его загрузчик jquery, который очень простой в дизайне, но очень эффективный
Показать ещё 9 комментариев
Теги:
ajax-upload

1 ответ

0

Вот как я это делаю. Если вам нужна дополнительная информация, а не только мой вставленный код, ознакомьтесь с этим http://www.html5rocks.com/en/tutorials/file/dndfiles/, потому что мой код был создан для перетаскивания файлов

        handleFiles : function(files, evt, target)
        {
            console.log(target);
            $.each(files, function(index, value)
            {
                var file = value;

                reader = new FileReader();
                reader.onload = function(evt)
                {
                    var li = $("<li class='uploading'><img data-image-id='0' src='" + evt.target.result + "' /></li>");
                    target.find('.imagesList').append(li);

                    var request = new XMLHttpRequest();
                    var formData = new FormData();
                    formData.append('image', file);

                    request.open("Post", settings.uploadImageUrl);
                    request.addEventListener("load", function(evt)
                    {
                        var id = evt.target.responseText;
                        li.removeClass('uploading');
                        li.find('img').attr('data-image-id', id);

                    }, false);
                    request.send(formData);
                };

                reader.readAsDataURL(value);

            });
        },

Ещё вопросы

Сообщество Overcoder
Наверх
Меню