Я пытаюсь загрузить файл с использованием функции $.ajax
jQuery, но не получил никакого вывода. Кто-нибудь, пожалуйста, помогите мне решить это. Я не знаю, правильно ли этот скрипт. Мой скрипт:
$.ajax({ url:'newsup.php', data: "", type: 'POST', contentType:'multipart/form-data', dataType: 'json', catche: 'false', success:function(data6) { $("#disp").removeClass().addClass((data6.error=== false)? 'success':'error').html(data6.msg).fadeIn('fast'); //dele(); if($("#disp").hasClass('success')) { alert("success"); setTimeout("$('#disp').fadeOut('slow')",3000); } }, error:function(XMLHttpRequest,textStatus,errorThrown) { $("#disp").removeClass().addClass('error').html("There was an <strong>"+errorThrown+"</strong> error due to <strong>"+textStatus+" condition").fadeIn('fast'); } });
Также мне нужна помощь в получении данных из области загрузки файлов с помощью jQuery.
AJAX не поддерживает загрузку файлов. Существуют плагины вроде ajaxfileupload, которые в основном создают скрытую форму и динамически загружают ваш файл.
посмотрите здесь и прочитайте ответ Оли
Для этого используйте плагин.
По-моему, этот плагин – лучшее решение для этого. Вам не нужно помнить все параметры и т. Д. Просто замените «ajax» на «ajaxForm».
Пожалуйста, ознакомьтесь с приведенными ниже примерами
http://jquery.malsup.com/form/#ajaxForm
Вы можете использовать любой из двух плагинов Jquery File Upload Plugins 1 или Jquery File Upload Plugins 2, и нет ошибок в этом скрипте.
Надеюсь, поможет
Спасибо, Рашид
Вот как я это сделал. Используйте объект FormData.
Примечание. Нечетный синтаксис оператора for просто устанавливает значение «f» в массив [i].
$("#submit").click(function () { var formData = new FormData(); for (var i = 0, f; f = fileArray[i]; i++) { formData.append("opmlFile", f); } $.ajax({ url: "/Documents/SaveFiles/" + @Model, type: "POST", data: formData, cache: false, contentType: false, processData: false }) .error(function (xhr, status, error) { $.notify(error, true); }) .success(function (data, status, xhr) { $.notify("Success"); }); });
К сожалению, я не помню, из какой статьи я получил это, но это был кто-то еще в Stack Overflow.
Ajax поддерживает загрузку файлов с использованием объекта FormData, а также поддерживается во всех основных браузерах, кроме IE8 / 9 См. Ниже
Просто используйте событие отправки в форме для отправки файлов и предотвращения действия формы по умолчанию
$('#form').submit(function(e) { return false; });
и получить файл на стороне сервера через
$_FILES['inputName'];
Я использую это, и он работает нормально:
$('#btnUploadFile').on('click', function () { var data = new FormData(); var files = $("#fileUpload").get(0).files; // Add the uploaded file content to the form data collection if (files.length > 0) { data.append("upload", files[0]); } // Make Ajax request with the contentType = false, and procesDate = false var ajaxRequest = $.ajax({ type: "POST", url: "/api/documents", contentType: false, processData: false, data: data, error: function (xhr, status, error) { console.log(xhr); console.log(status); console.log(error); console.log(data); } }); ajaxRequest.done(function (xhr, textStatus) { $("#response").attr('class', "alert alert-success"); $("#response").html("File uploaded successfully"); }); });