Ini adalah HTML saya yang saya hasilkan secara dinamis menggunakan fungsionalitas drag and drop.
<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>
Ini adalah kode JavaScript saya:
<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();
metode append memiliki parameter ketiga opsional untuk file.Jawaban:
Untuk penggunaan data formulir yang benar, Anda perlu melakukan 2 langkah.
Persiapan
Anda bisa memberikan seluruh formulir Anda ke FormData () untuk diproses
atau tentukan data pasti untuk FormData ()
Mengirim formulir
Permintaan Ajax dengan jquery akan terlihat seperti ini:
Setelah ini, ia akan mengirim permintaan ajax seperti Anda mengirimkan formulir biasa dengan
enctype="multipart/form-data"
Pembaruan: Permintaan ini tidak dapat berfungsi tanpa
type:"POST"
opsi karena semua file harus dikirim melalui permintaan POST.Catatan:
contentType: false
hanya tersedia dari jQuery 1.6 dan seterusnyasumber
getCsrfToken
?$('form')
, itu akan mengembalikan objek jQuery. Tapi kita perlu objek js reguler di sini tanpa fungsionalitas jQuery. Itu sebabnya kita mendapatkan objek reguler dengan[0]
notasi. Alih-alih konstruksi ini Anda dapat memanggildocument.getElementById()
atau panggilan simular.Saya tidak dapat menambahkan komentar di atas karena saya tidak memiliki reputasi yang cukup, tetapi jawaban di atas hampir sempurna untuk saya, kecuali saya harus menambahkan
ketik: "POST"
ke panggilan .ajax. Aku menggaruk-garuk kepalaku selama beberapa menit, mencoba mencari tahu apa yang telah kulakukan salah, hanya itu yang diperlukan dan berhasil mengobati. Jadi ini keseluruhan cuplikan:
Penghargaan penuh untuk jawaban di atas saya, ini hanya sedikit perubahan untuk itu. Ini hanya untuk berjaga-jaga jika ada orang lain yang macet dan tidak bisa melihat yang jelas.
sumber
jQuery dengan unggahan file CodeIgniter:
kamu bisa memakai.
atau
Keduanya akan bekerja.
sumber
sumber
sumber
sumber
Sebenarnya Dokumentasi menunjukkan bahwa Anda dapat menggunakan
XMLHttpRequest().send()
hanya mengirim data multiformis dalam kasus jquery menyebalkansumber
Lebih baik menggunakan javascript asli untuk menemukan elemen dengan id seperti: document.getElementById ("yourFormElementID") .
sumber
Selamat pagi.
Saya memiliki masalah yang sama dengan mengunggah banyak gambar. Solusi lebih sederhana daripada yang saya bayangkan: sertakan [] di bidang nama.
Saya tidak melakukan modifikasi apa pun pada FormData.
sumber