2014-07-15 6 views
7

Ich benutze das jQuery-File-Upload Plugin von Blueimp (Grundversion) und ich habe ein Problem. Der erste Datei-Upload funktioniert wie erwartet, aber wenn ich eine andere Datei senden möchte, funktioniert es nicht.BlueImps jQuery-Datei-Upload Zweiter Datei-Upload-Fehler

fileinput.fileupload({ 
      dataType: 'json', 
      done: function (e, data) { 
       $.each(data.result.files, function (index, file) { 
        //do stuff with files 
       }); 
      } 
     }).bind('fileuploadadd', function (e, data) { 
      data.context = $('<p/>').text('Uploading...').appendTo(document.body); 
      data.submit(); 

     }); 

EDIT:

Ok ich weiß, was ein Problem verursacht. Aber ich weiß nicht, wie ich das beheben soll. Ich habe das Fileupload-Plugin für die Eingabe verwendet, die display none gesetzt hat. Ich trigse es mit einer anderen Taste, die click()/trigger ('click') Methode auf versteckte Eingabe verwendet. Der erste Trigger funktioniert gut, aber der zweite löst den Dateiauswahldialog aus. Nach der Auswahl passiert nichts. Wenn ich Eingabefeld direkt benutze, funktioniert es wie es sollte. Wie überwinde ich dieses Problem?

+1

Ich habe das gleiche Konzept und die gleichen Symptome. Es sieht so aus, als ob die rohe Lösung darin besteht, 'fileupload ('destroy')' und nach jedem Ajax 'done'-Event erneut anzuwenden. Hast du es anders gelöst? – vatavale

Antwort

5

Das Problem erscheint, weil jQuery-Datei-Hochladen Klon und das Eingabefeld ersetzen nach jedem Upload (docs) .

So triggern Sie click Ereignis auf dem alten Datei-Eingangs-Tag, die nicht mehr funktioniert.

Um dies zu lösen, die Sie mindestens zwei Möglichkeiten:

  1. Trigger-click Ereignis auf neue Datei-Eingabe nach jedem blueimp add Ereignisse.

  2. Verwenden Sie replaceFileInput: false auf Plugin-Setup (dies wird degradieren UX in einigen Browsern). (docs)

0

ist schwer zu beantworten, da es nicht genügend Informationen, aber so etwas wie dies funktionieren kann:

function test() { 

    fileinput.fileupload({ 
     dataType: 'json', 
     done: function (e, data) { 
      $.each(data.result.files, function (index, file) { 
       //do stuff with files 
      }); 
     } 
    }).bind('fileuploadadd', function (e, data) { 
     data.context = $('<p/>').text('Uploading...').appendTo(document.body); 
     data.submit(); 
     test(); 
    }); 

} 

test(); 
+0

Ich habe das versucht und leider hat es nicht geholfen. –

+0

Ich nehme an, ich weiß nicht, wie Ihre Website funktioniert. – peterpeterson

+1

Benötigt die Basisversion des Plugins eine formalisierte JSON-Antwort? –

Verwandte Themen