Как я могу загрузить файл, используя функцию jQuery $ .ajax с json и php

Я пытаюсь загрузить файл с использованием функции $.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 См. Ниже

https://developer.mozilla.org/en-US/docs/Web/API/FormData

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

$('#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"); }); });