I have a form in html to register a product for it use ajax, when I make a serialize to the form I get all the fields of the same except for the field of type file that with FormData (), I can get this field but I like to know there is a way with serialize to obtain it.
function ajaxRequest(url, method, data, datatype, successCallback, errorCallback) {
$.ajax({
url: url,
data: data,
dataType: datatype,
type: method,
// cache: false,
// contentType: false,
processData: false,
success: function (response) {
eval(successCallback + '(' + JSON.stringify(response) + ')');
},
error: function(error){
eval(successCallback + '(' + JSON.stringify(error) + ')');
}
});
}
$('#crear-producto').click(function(){
let data = $('#nuevo-producto').serialize();
// let file = new FormData();
// data = {
// 'datos': $('#nuevo-producto').serialize(),
// 'file': file.append('imagen', $('#imagen-producto')[0])
// };
ajaxRequest(constants.URL.PRODUCTOS.CREAR, 'POST', data, 'json', 'successRequest', 'errorRequest');
});
<form enctype="multipart/form-data" id="nuevo-producto">
<div class="row">
<div class="col-md-6">
<label for="producto" class="control-label">Producto:</label>
<input type="text" name="producto" id="producto" class="form-control border-green" value="{% if p is defined %}{{ p.nombre }} {% endif %}"/>
</div>
<div class="col-md-6">
<label for="marca" class="control-label">Marca:</label>
<select class="form-control get-dependency border-green" name="marca" id="marca" data-element="referencia" >
<option selected disabled>--Seleccionar--</option>
{% for marca in marcas %}
<option value="{{ marca.id }}">{{ marca.nombre }}</option>
{% endfor %}
</select>
</div>
<div class="col-md-6">
<label for="referencia" class="control-label">Referencia:</label>
<select class="form-control border-green" name="referencia" id="referencia">
<option selected disabled>--Seleccionar--</option>
</select>
</div>
<div class="col-md-6">
<label for="precio" class="control-label">Valor Unidad</label>
<input type="number" name="precio" id="precio" class="form-control border-green" />
</div>
<div class="col-md-6">
<label for="unidades" class="control-label">Unidades:</label>
<input type="number" name="unidades" id="unidades" class="form-control border-green" />
</div>
<div class="col-md-12"></div>
<div class="col-md-6">
<label for="genero" class="control-label">Genero:</label>
<select class="form-control border-blue" name="genero" id="genero" >
<option selected disabled>--Seleccionar--</option>
{% for genero in generos %}
<option value="{{ genero.id }}">{{ genero.nombre }}</option>
{% endfor %}
</select>
</div>
<div class="col-md-6">
<label for="estado" class="control-label">Estado:</label>
<select class="form-control border-blue" name="estado" id="estado" >
<option selected disabled>--Seleccionar--</option>
{% for estado in estados %}
<option value="{{ estado.id }}">{{ estado.nombre }}</option>
{% endfor %}
</select>
</div>
<div class="col-md-6">
<label for="lanzamiento" class="control-label">Lanzamiento:</label>
<input type="date" name="lanzamiento" id="lanzamiento" class="form-control border-blue" />
</div>
<div class="col-md-6">
<label for="" class="control-label" style="margin-bottom: 0 !important;">Calificación:</label><br>
<span class="clasificacion">
<input class="estrella" id="radio1" name="estrellas" value="5" type="radio">
<label for="radio1" class="label-estrella">★</label>
<input class="estrella" id="radio2" name="estrellas" value="4" type="radio">
<label for="radio2" class="label-estrella">★</label>
<input class="estrella" id="radio3" name="estrellas" value="3" type="radio">
<label for="radio3" class="label-estrella">★</label>
<input class="estrella" id="radio4" name="estrellas" value="2" type="radio">
<label for="radio4" class="label-estrella">★</label>
<input class="estrella" id="radio5" name="estrellas" value="1" type="radio">
<label for="radio5" class="label-estrella">★</label>
</span>
</div>
<div class="col-md-12">
<label for="imagen-producto" class="control-label">Imagen del producto</label>
<input type="file" name="imagen-producto" id="imagen-producto" class="form-control" />
</div>
<div class="col-md-12">
<input type="button" value="Crear Producto" class="btn btn-success pull-right enviar" id="crear-producto"/>
</div>
</div>
</form>