Este é o meu HTML que estou gerando dinamicamente usando a funcionalidade de arrastar e soltar.
<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>
Este é o meu código 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();
método append possui um terceiro parâmetro opcional para um arquivo.Respostas:
Para o uso correto dos dados do formulário, você precisa executar 2 etapas.
Preparações
Você pode fornecer seu formulário inteiro para FormData () para processamento
ou especifique dados exatos para FormData ()
Enviando formulário
A requisição Ajax com jquery terá a seguinte aparência:
Depois disso, ele enviará uma solicitação ajax como você envia um formulário regular com
enctype="multipart/form-data"
Atualização: Esta solicitação não pode funcionar sem
type:"POST"
opções, pois todos os arquivos devem ser enviados via solicitação POST.Nota:
contentType: false
disponível apenas no jQuery 1.6 em diantefonte
getCsrfToken
?$('form')
, ele retornará o objeto jQuery. Mas precisamos do objeto js regular aqui sem a funcionalidade jQuery. É por isso que obtemos objetos regulares com[0]
notação. Em vez desta construção, você pode ligardocument.getElementById()
ou simular.Não posso adicionar um comentário acima, pois não tenho reputação suficiente, mas a resposta acima foi quase perfeita para mim, exceto que tive que adicionar
tipo: "POST"
para a chamada .ajax. Eu estava coçando a cabeça por alguns minutos tentando descobrir o que havia feito de errado, isso é tudo o que precisava e funciona. Portanto, este é o trecho completo:
Crédito total para a resposta acima de mim, este é apenas um pequeno ajuste para isso. Isso é apenas no caso de alguém ficar preso e não conseguir ver o óbvio.
fonte
jQuery com upload de arquivo CodeIgniter:
você pode usar.
ou
Ambos irão funcionar.
fonte
fonte
fonte
fonte
Na verdade, a documentação mostra que você pode usar
XMLHttpRequest().send()
para simplesmente enviar dados multiformes , caso o jquery seja uma merdafonte
Melhor usar o javascript nativo para encontrar o elemento por ID como: document.getElementById ("yourFormElementID") .
fonte
Bom Dia.
Eu estava com o mesmo problema com o upload de várias imagens. A solução foi mais simples do que eu imaginava: inclua [] no campo de nome.
Não fiz nenhuma modificação no FormData.
fonte