To jest mój HTML, który generuję dynamicznie za pomocą funkcji przeciągnij i upuść.
<form method="POST" id="contact" name="13" class="form-horizontal wpc_contact" novalidate="novalidate" enctype="multipart/form-data">
<fieldset>
<div id="legend" class="">
<legend class="">file demoe 1</legend>
<div id="alert-message" class="alert hidden"></div>
</div>
<div class="control-group">
<!-- Text input-->
<label class="control-label" for="input01">Text input</label>
<div class="controls">
<input type="text" placeholder="placeholder" class="input-xlarge" name="name">
<p class="help-block" style="display:none;">text_input</p>
</div>
<div class="control-group"> </div>
<label class="control-label">File Button</label>
<!-- File Upload -->
<div class="controls">
<input class="input-file" id="fileInput" type="file" name="file">
</div>
</div>
<div class="control-group">
<!-- Button -->
<div class="controls">
<button class="btn btn-success">Button</button>
</div>
</div>
</fieldset>
</form>
To jest mój kod JavaScript:
<script>
$('.wpc_contact').submit(function(event){
var formname = $('.wpc_contact').attr('name');
var form = $('.wpc_contact').serialize();
var FormData = new FormData($(form)[1]);
$.ajax({
url : '<?php echo plugins_url(); ?>'+'/wpc-contact-form/resources/js/tinymce.php',
data : {form:form,formname:formname,ipadd:ipadd,FormData:FormData},
type : 'POST',
processData: false,
contentType: false,
success : function(data){
alert(data);
}
});
}
formData();
metoda dołączania ma opcjonalny trzeci parametr dla pliku.Odpowiedzi:
Aby poprawnie korzystać z danych formularza, musisz wykonać 2 kroki.
Przygotowania
Możesz przekazać cały formularz FormData () do przetworzenia
lub podaj dokładne dane dla FormData ()
Formularz wysyłania
Żądanie Ajax z jquery wygląda następująco:
Następnie wyśle prośbę o ajax, tak jak przedkładasz zwykły formularz za pomocą
enctype="multipart/form-data"
Aktualizacja: To żądanie nie może działać bez
type:"POST"
opcji, ponieważ wszystkie pliki muszą zostać wysłane za pomocą żądania POST.Uwaga:
contentType: false
dostępne tylko od wersji jQuery 1.6źródło
getCsrfToken
?$('form')
, zwróci obiekt jQuery. Ale potrzebujemy tutaj zwykłego obiektu js bez funkcji jQuery. Dlatego otrzymujemy zwykły obiekt z[0]
notacją. Zamiast tej konstrukcji możesz zadzwonićdocument.getElementById()
lub połączyć się równolegle.Nie mogę dodać komentarza powyżej, ponieważ nie mam wystarczającej reputacji, ale powyższa odpowiedź była dla mnie prawie idealna, tyle że musiałem dodać
wpisz: „POST”
do połączenia .ajax. Drapałem się po głowie przez kilka minut, próbując dowiedzieć się, co zrobiłem źle, to wszystko, czego potrzeba i działa na ucztę. Oto cały fragment:
Pełne podziękowania dla odpowiedzi nade mną, to tylko drobna poprawka do tego. Dzieje się tak na wypadek, gdyby ktoś utknął i nie widział oczywistości.
źródło
jQuery z przesyłaniem pliku CodeIgniter:
możesz użyć.
lub
Oba będą działać.
źródło
źródło
źródło
źródło
W rzeczywistości dokumentacja pokazuje, że możesz użyć
XMLHttpRequest().send()
do wysłania danych wielopostaciowych na wypadek, gdyby jquery było do baniźródło
Lepiej użyć natywnego javascript do znalezienia elementu według identyfikatora, na przykład: document.getElementById („yourFormElementID”) .
źródło
Dzień dobry.
Miałem ten sam problem z przesyłaniem wielu zdjęć. Rozwiązanie było prostsze niż się spodziewałem: w polu nazwy wpisz [].
Nie wprowadziłem żadnych zmian w FormData.
źródło