2013-06-09 2 views
0

Я работаю над службой обмена файлами. Однако я столкнулся с проблемой. По какой-то причине файл выбирается, однако AJAX не читает этот выбор и не загружает файл автоматически. И, таким образом, этот ответ не обрабатывается обратно и не вставлен в DIV на странице.ajax не отправляет форму

HTML + ФОРМА

 <div class="file-input-wrapper"> 
      <form method="post" enctype="multipart/form-data" action="upload.xml"> 
      <button class="btn-file-input" id="bt">Select a File to Share</button> 
      <input type="file" name="file" multiple /> 
      </form> 
      <br/><br/> 
      <div id="response"></div> 
     </div> 

JAVASCRIPT

(function() { 
    var input = document.getElementById("file"), 
     formdata = false; 

    function showUploadedItem(source) { 
     document.getElementById("image-list").innerHTML = "<li><img src='" + source + "' /></li>"; 
    } 

    if (window.FormData) { 
     formdata = new FormData(); 
     document.getElementById("bt").style.display = "inline"; 
    } 

    input.addEventListener("change", function (evt) { 
     document.getElementById("response").innerHTML = "<div class='uploading'></div>" 
     var i = 0, 
      len = this.files.length, 
      img, reader, file; 
     formdata = new FormData(); 
     //for (; i < len; i++) { 
     file = this.files[i]; 

     if (file.type.match(/file.*/)) { 
      if (window.FileReader) { 
       reader = new FileReader(); 
       reader.onloadend = function (e) { 
        var source = e.target.result; 
        document.getElementById("image-list").innerHTML = "<li><img src='" + source + "' /></li>"; 
       }; 
       reader.readAsDataURL(file); 
      } 
      if (formdata) { 
       formdata.append("file[]", file); 
      } 
     } 
     //} 

     if (formdata) { 
      $.ajax({ 
        url: "upload.xml", 
        type: "POST", 
        data: formdata, 
        processData: false, 
        contentType: false, 
        success: function (res) { 
         document.getElementById("response").innerHTML = res; 
        } 
       }); 
     } 
    }, false); 
})(); 

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

Вы также можете посмотреть на код жить по этому адресу: cyogen.com

+0

Что вы хотите сказать? Вышеприведенный код выглядит отлично, и страница, на которую вы смотрели, кажется, работает отлично. –

+0

Я не уверен, что это был ты, кто проголосовал, но если ты позаботился о том, чтобы взглянуть на источник, это не то же самое, что и выше, потому что я его исправил. Это добавляется после того, как входной файл <кнопочного типа = «не отправит» ID = «БТНЫ» стиль = «дисплей: нет;»> – 0111010001110000

ответ

3

Это потому, что ваш идентификатор «Ы» не «BTN». По этой линии:

document.getElementById("btn").style.display = "none"; 
+0

Это не будет иметь значение, я изменил его на «Ы» и он просто спрятан кнопка. Нажав на пустой раздел, где была кнопка, все равно будет запускаться ввод файла, однако выбор файла не приведет к загрузке. – 0111010001110000

+0

Я обновил код до document.getElementById ("bt"). Style.display = "inline"; по-прежнему та же проблема, что и раньше – 0111010001110000

+0

Это заставило скрипт остановиться в Chrome, но может быть ошибка в другом месте. –