Żadna z tych odpowiedzi nie działa w przypadku przesyłania wielu plików. Mój przypadek wymagał dopuszczenia wielu załączników w wątku komentarzy. Musiałem więc najpierw zapisać komentarz, aby uzyskać identyfikator, a następnie przesłać i zapisać wszystkie załączniki. Wydaje się to banalną rzeczą, ale z tą wtyczką nie jest to aż tak intuicyjne. Moje rozwiązanie wykorzystuje niestandardowe zdarzenia w jQuery i działa świetnie.
Aktualnie akceptowana odpowiedź wiąże się ze zdarzeniem kliknięcia przycisku w wywołaniu zwrotnym "dodaj", ale wywołanie zwrotne "dodaj" jest wywoływane raz dla każdego pliku. Jeśli usuniesz wszystkie zdarzenia za każdym razem, tylko ostatni plik zostanie przesłany.
$('#fileupload').fileupload({
dataType: 'json',
add: function (e, data) {
$("#up_btn").on('customName', function (e) {
data.submit();
});
},
});
Wiążąc przycisk przesyłania z niestandardową nazwą, możemy wykonać dowolne przetwarzanie przed wysłaniem obrazów. W moim przypadku polegało to na przesłaniu komentarza i odzyskaniu komentarza, który zrobiłem w oddzielnym wywołaniu. Ten kod odpowiada tylko na kliknięcie, ale możesz zrobić, co chcesz, przed uruchomieniem zdarzenia.
$("#up_btn").on('click', function (e) {
e.preventDefault();
$("#up_btn").trigger("customName");
});
Możesz przekazać dowolne dane, gdy uruchomisz zdarzenie, dzięki czemu naprawdę uzyskasz pełną kontrolę nad formularzem.
Upewnij się, że przycisk #up_btn nie znajduje się w formularzu #fileupload. – krizajb
Prawdopodobnie chcesz też użyć 'one' zamiast' on' (i ponownie powiązać zdarzenie post-submit), aby uniknąć powielonych żądań. – zykadelic
Pozwoli to uniknąć duplikowania żądań: '$ (" # imgupload "). Unbind (" kliknij " ') .on (' click ', function() {data.submit();}); 'as @zykadelic suggested –