PHP - Enviar imagen de formulario por AJAX

 
Vista:
Imágen de perfil de Hector
Val: 26
Ha aumentado su posición en 4 puestos en PHP (en relación al último mes)
Gráfica de PHP

Enviar imagen de formulario por AJAX

Publicado por Hector (20 intervenciones) el 10/02/2018 23:24:37
Hola amigos,

Espero me puedan ayudar con este tema por favor!

les comento....
tengo una ventana modal desde la cual voy a almacenar productos la cual luce mas o menos así

1

el codigo es el siguiente
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
<form name="add_product" id="add_product" enctype="multipart/form-data">
	<div class="modal-header">
		<h4 class="modal-title">Agregar Producto</h4>
		<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
	</div>
	<div class="modal-body">
		<div class="form-group">
			<label>Código</label>
			<input type="text" name="code"  id="code" class="form-control" value="<?php echo $eje; ?>" required readonly>
 
		</div>
		<div class="form-group">
			<label>Nombre</label>
			<input type="text" name="name" id="name" class="form-control" required>
		</div>
		<div class="form-group">
			<label>Categoría</label>
			<select name="category" id="category" class="form-control" required>
			    <option>Seleccione...</option>
			    <option>Estampados</option>
			    <option>Gorros</option>
			    <option>Rotulados y Graficas</option>
			    <option>Otros</option>
			</select>
		</div>
		<div class="form-group">
			<label>Stock</label>
			<input type="number" name="stock" id="stock" class="form-control" required>
		</div>
		<div class="form-group">
			<label>Precio</label>
			<input type="text" name="price" id="price" class="form-control" required>
		</div>
		<div class="form-group">
			<label>Descripción</label>
			<textarea name="descripcion" id="descripcion" class="form-control" required placeholder="Descripción del producto"></textarea>
		</div>
		<div class="form-group">
			<label>Imagen</label>
			<input type="file" name="img" id="img" class="form-control" >
		</div>
	</div>
	<div class="modal-footer">
		<input type="button" class="btn btn-default" data-dismiss="modal" value="Cancelar">
		<input type="submit" class="btn btn-success" value="Guardar datos">
	</div>
</form>

al pinchar el boton de "guardar datos" se ejecuta el siguiuente script

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
$( "#add_product" ).submit(function( event ) {
	var parametros = $(this).serialize();
	$.ajax({
		type: "POST",
		url: "ajax/guardar_producto.php",
		data: parametros,
		beforeSend: function(objeto){
			$("#resultados").html("Enviando...");
		},
		success: function(datos){
			$("#resultados").html(datos);
			load(1);
			$('#addProductModal').modal('hide');
		}
	});
  event.preventDefault();
});

con esto logro ingresar los datos a la base de datos sin la imagen... al momento de ingresarle una imagen siempre me dice que la variable "img" de guardar_producto.php está vacía.

osea es como que enviara la imagen por lo que no puedo seguir con el proceso de subir la imagen y guardar su ruta en la base de datos..

Según yo el problema lo tengo en como envío mi formulario con ajax creo q algo me falta en esas lineas de codigo... agradecería cualquier ayuda y/o comentarios..

espero haberme expresado bien y que entiendan. estaré atento a sus comentarios..


Desde ya muchas gracias! :-)
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 604
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Enviar imagen de formulario por AJAX

Publicado por Miguel (218 intervenciones) el 11/02/2018 06:40:04
Para subir archivos tienes que usar un FormData en lugar del serialize. Implementa este código que encontré en la web:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$('#imageUploadForm').submit(function(evt) {
    evt.preventDefault();
 
    var formData = new FormData(this);
 
    $.ajax({
	    type: 'POST',
	    url: $(this).attr('action'),
	    data:formData,
	    cache:false,
	    contentType: false,
	    processData: false,
	    success: function(data) {
	        $('#imagedisplay').html("<img src=" + data.url + "" + data.name + ">");
	    },
	    error: function(data) {
	        $('#imagedisplay').html("<h2>this file type is not supported</h2>");
	    }
    });
});
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Georkis
Val: 75
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Enviar imagen de formulario por AJAX

Publicado por Georkis (32 intervenciones) el 12/02/2018 14:43:50
ola, si necesita enviar una imagen juntamente otros parametros, te recomiendo que uses un plugin jQuery, se llama ajaxForm... yo lo uso y esta super bueno, te mide la transferencia con una barra de progreso...

Te voy a dar varios links de algunas librerias, escoge cualquiera usar

https://jquery-form.github.io/form/
https://desarrolloweb.com/articulos/upload-archivos-ajax-jquery.html

Te recomiendo este:

https://www.uno-de-piera.com/ajaxform-subir-archivos-con-progress-bar-en-jquery/
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar