2013-11-16 3 views
1

Html код:загрузить файл Ajax не работает

<input type="file" id="file" /> 

JQuery код:

$.ajax({ 
     url: 'go.php', 
     data: {file:$('#file').attr('files'),upload:name}, 
     cache: false, 
     contentType: 'multipart/form-data', 
     processData: false, 
     type: 'POST', 
     success: function(data){ 
      alert(data); 
     }, 
     error: function(data){ 
      alert("error"); 
     } 
    }); 

PHP код:

if(isset($_POST['file'])){ 
    echo "1"; 
} 

После загрузки оповещения пустое сообщение!

Но этот код должен ошибки «1»

+0

Вы должны изучить [FormData] (https://developer.mozilla.org/en-US/docs/Web/API/FormData) и фреймы как резерв для старых браузеров. Загрузка файлов не так просто, как просто передача значения. – adeneo

ответ

-1

Загрузка файлов direcley с использованием Ajax не представляется возможным. но есть некоторые обходные пути, использующие фреймы. попробовать этот учебник:

http://net.tutsplus.com/tutorials/javascript-ajax/uploading-files-with-ajax/

Прочитайте этот пост : jQuery Ajax File Upload CFR

+0

Возможна загрузка файлов напрямую с помощью ajax. Читайте на XHR2/FormData. На самом деле, одна из ваших ссылок показывает, как загружать файлы через ajax. –

+0

ОК, ты прав, но я не хотел использовать метод .ajax –

+0

А? Вы можете загружать файлы «с помощью метода .ajax». –

0

Сво обходной путь, но может помочь ...

function uploadFile() { 
      var file = document.getElementById('fileToUpload').files[0]; 
       if (file) { 
        var fileSize = 0; 
        var fileType = ''+file.type; 
        if(checkType(fileType)){ 
          var fd = new FormData(); 
          fd.append("fileToUpload", document.getElementById('fileToUpload').files[0]); 
          var xhr = new XMLHttpRequest(); 

          xhr.open("POST", "uploadPhoto"); 
          xhr.send(fd); 
        } 
        else{ 
          document.getElementById('fileToUpload').value ='' ; 
          alert("Choose of specified file Format only."); 
         } 
       } 
     }* 
0

Всегда помните, если какой-либо из этих решений не работают и атрибуты файлов не отображаются:

$.ajax({ url : here });

несмотря на то, что все правильно.

Если ваш <form> сам становится загружен с AJAX вызова,

  1. попробовать положить его в основной файл (то есть. Один из которых в URL) или
  2. Поместите <form> файл на месте появляющейся в URL (то есть. конечная папка файла , отображаемая в URL-адресе), а затем использовать функцию include() для включения файла.
Смежные вопросы