Это мой HTML, который я генерирую динамически, используя функцию перетаскивания.
<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>
Это мой код 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();
метод добавления имеет необязательный третий параметр для файла.Ответы:
Для правильного использования данных формы вам нужно сделать 2 шага.
Препараты
Вы можете передать всю форму FormData () для обработки
или укажите точные данные для FormData ()
Форма отправки
Ajax-запрос с jquery будет выглядеть так:
После этого он отправит запрос Ajax, как вы отправляете регулярную форму с
enctype="multipart/form-data"
Обновление: этот запрос не может работать без
type:"POST"
параметров, так как все файлы должны быть отправлены через запрос POST.Примечание:
contentType: false
доступно только с jQuery 1.6 и вышеисточник
getCsrfToken
?$('form')
, он вернет объект jQuery. Но нам нужен обычный объект js без функции jQuery. Вот почему мы получаем обычный объект с[0]
обозначениями. Вместо этой конструкции вы можете позвонитьdocument.getElementById()
или симулировать вызов.Я не могу добавить комментарий выше, так как мне не хватает репутации, но приведенный выше ответ был почти идеальным для меня, за исключением того, что я должен был добавить
Тип: "ПОЧТА"
на вызов .ajax. Я несколько минут чесал голову, пытаясь понять, что я сделал неправильно, вот и все, что нужно, и это доставляет удовольствие. Итак, это весь фрагмент:
Полная заслуга в ответе выше меня, это всего лишь небольшая поправка к этому. Это на всякий случай, если кто-то застрянет и не увидит очевидного.
источник
jQuery с загрузкой файла CodeIgniter:
ты можешь использовать.
или
Оба будут работать.
источник
источник
источник
источник
На самом деле документация показывает, что вы можете использовать
XMLHttpRequest().send()
для простой отправки мультиформных данных в случае, если jquery отстойисточник
Лучше использовать собственный JavaScript, чтобы найти элемент по идентификатору, например: document.getElementById ("yourFormElementID") .
источник
Доброе утро.
У меня была такая же проблема с загрузкой нескольких изображений. Решение оказалось проще, чем я предполагал: включите [] в поле имени.
Я не делал никаких изменений на FormData.
источник