Este es mi HTML que estoy generando dinámicamente usando la funcionalidad de arrastrar y 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 es mi 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 tiene un tercer parámetro opcional para un archivo.Respuestas:
Para el uso correcto de los datos del formulario, debe realizar 2 pasos.
Preparativos
Puede entregar su formulario completo a FormData () para su procesamiento
o especifique datos exactos para FormData ()
Enviando formulario
La solicitud de Ajax con jquery se verá así:
Después de esto, enviará una solicitud ajax como si enviaras un formulario regular con
enctype="multipart/form-data"
Actualización: esta solicitud no puede funcionar sin
type:"POST"
opciones, ya que todos los archivos deben enviarse a través de la solicitud POST.Nota:
contentType: false
solo disponible desde jQuery 1.6 en adelantefuente
getCsrfToken
?$('form')
, devolverá el objeto jQuery. Pero necesitamos un objeto js regular aquí sin la funcionalidad jQuery. Es por eso que obtenemos objetos regulares con[0]
notación. En lugar de esta construcción puede llamardocument.getElementById()
o llamar simular.No puedo agregar un comentario arriba porque no tengo suficiente reputación, pero la respuesta anterior fue casi perfecta para mí, excepto que tuve que agregar
tipo: "POST"
a la llamada .ajax. Estuve rascándome la cabeza por unos minutos tratando de descubrir qué había hecho mal, eso es todo lo que necesitaba y funciona de maravilla. Entonces este es todo el fragmento:
Crédito completo a la respuesta por encima de mí, esto es solo un pequeño ajuste a eso. Esto es solo en caso de que alguien más se quede atascado y no pueda ver lo obvio.
fuente
jQuery con carga de archivo CodeIgniter:
puedes usar.
o
Ambos funcionarán.
fuente
fuente
fuente
fuente
En realidad, la documentación muestra que puede usar
XMLHttpRequest().send()
simplemente enviar datos multiformes en caso de que jquery sea una mierdafuente
Es mejor usar el javascript nativo para encontrar el elemento por id como: document.getElementById ("yourFormElementID") .
fuente
Buenos días.
Tuve el mismo problema con la carga de varias imágenes. La solución fue más simple de lo que había imaginado: incluir [] en el campo de nombre.
No hice ninguna modificación en FormData.
fuente