PHP - Formulario php y ajax envia muchas veces

 
Vista:
sin imagen de perfil
Val: 22
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Formulario php y ajax envia muchas veces

Publicado por lucas (8 intervenciones) el 08/10/2020 02:00:41
Hola, tengo un formulario armado en php y js, el problema está cuando hago el envio al mail del destinatario, ya que llega el mismo mail enviado entre 4 y 6 veces, y no sé dónde puede estar el error en el código, si alguien pudiera ayudarme le agredezco mucho, los formularios están acá:

http://admanasto.com.ar/reparaciones/index.php

http://admanasto.com.ar/pagos/index.php



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
Imágen de perfil de Yoel
Val: 617
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Formulario php y ajax envia muchas veces

Publicado por Yoel (198 intervenciones) el 08/10/2020 04:41:22
Hola lucas, sin ver tu código es un poco Dificil de decir que te puede estar pasando pero te puedo dar una sugerencia. Si estas usando ajax() para enviar el correo, una vez que des clic (botón de enviar) desabilitalo. En caso que no se te resuelva el problema por favor coloca el código para poderte ayudar mejor.


Gracias.


Nota: por favor coloca tu sitio con https para que tengas más seguridad.
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 Yoel
Val: 617
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Formulario php y ajax envia muchas veces

Publicado por Yoel (198 intervenciones) el 08/10/2020 16:07:09
Hola lucas, no puedo abrir el código que me envías dice que esta corrupto por favor puedes colocarlo aqui en el foro para poderlo ver.

Gracias
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
sin imagen de perfil
Val: 22
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Formulario php y ajax envia muchas veces

Publicado por lucas (8 intervenciones) el 08/10/2020 15:58:15
INDEX.PHP

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
<?php
	// Aquí el email al que queres recibir el correo
	$receptor = 'lucasmlujan@gmail.com';
 
	$mensajes_error = array(
		// 'email' => 'Introduce un e-mail válido',
		'mensaje' => 'Tienes que introducir un mensaje',
		'importe' => 'Introduce un importe',
		'unidad' => 'Introduce una unidad/departamento',
		'direccion' => 'Introduce una dirección',
		'fecha' => 'Introduce una fecha de pago'
	);
 
	$mensaje_correcto = "Gracias, el pago se envió correctamente";
 
	$enviado = $_SERVER['REQUEST_METHOD'] === "POST" || isset($_GET['ajax']);
	if( $enviado ) {
		include('message.php');
	}
?><!DOCTYPE html>
<!--[if lt IE 7]>
<html class="ie6 lt-ie7 lt-ie8 lt-ie9 no-js" lang="es">
<![endif]-->
<!--[if IE 7]>
<html class="ie7 lt-ie8 lt-ie9 no-js" lang="es">
<![endif]-->
<!--[if IE 8]>
<html class="ie8 lt-ie9 no-js" lang="es">
<![endif]-->
<!--[if (gte IE 9) | !(IE)  ]><!-->
<html class="no-js" lang="es">
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
 
<!--<![endif]-->
	<head>
		<!-- Arriba: hacks para IE ;) -->
		<title>Informando pago | Administración Anastopulos</title>
		<!--
			Charset (juego de caracteres para que se vean las tildes, etc)
		-->
		<meta charset="UTF-8">
 
		<!--
			Viewport (la usan los móviles para calcular el ancho de las páginas)
		-->
		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1" />
 
		<!--
			Referencia a nuestros archivos CSS
		-->
		<!-- Core theme CSS (includes Bootstrap)-->
		<link href="../css/styles.css" rel="stylesheet" />
		<link href="../css/custom.css" rel="stylesheet">
		<!--
			Referencia a modernizr (en el head)
			script.js => encima de </body>,
						 para acelerar la carga
						 y evitar conflictos con el DOM
		-->
		<script type="text/javascript" src="js/modernizr.js"></script>
 
	</head>
	<body>
		<!-- Navigation-->
		<nav class="navbar navbar-expand-lg navbar-dark bg-dark" id="mainNav">
				<div class="container">
						<a class="navbar-brand js-scroll-trigger" href="../index.html"><img src="../img/logo_h.svg" alt=""/></a>
						<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">
								Menu
								<i class="fas fa-bars ml-1"></i>
						</button>
						<div class="collapse navbar-collapse" id="navbarResponsive">
								<ul class="navbar-nav text-uppercase ml-auto">
										<li class="nav-item"><a class="nav-link js-scroll-trigger" href="#servicios">Servicios</a></li>
										<li class="nav-item"><a class="nav-link js-scroll-trigger" href="#nosotros">Nosotros</a></li>
										<li class="nav-item"><a class="nav-link js-scroll-trigger" href="#consorcistas">Consorcistas</a></li>
										<li class="nav-item"><a class="nav-link js-scroll-trigger" href="#ubicacion">Ubicación</a></li>
										<li class="nav-item"><a class="nav-link js-scroll-trigger" href="#contact">Contacto</a></li>
								</ul>
						</div>
				</div>
		</nav>
		<!-- Slider-->
		<header>
		</header>
		 <section class="page-section bg-secondary">
		<div class="container">
 
			<!--
				Aquí pondremos los errores (de existir alguno)
			-->
			<div id="error"><?php if( $enviado && $errores !== null ) {
				echo '<ul><li>' . implode('</li><li>', $errores) . '</li></ul>';
			} ?></div>
 
			<!--
				Definimos el método de envío (POST hace que nuestros datos no se puedan ver desde
				el navegador, que es lo más seguro), y la URL a la que enviarlo (post.php)
			-->
			<div class="col-md-6 mx-auto text-center">
				 <div class="header-title">
					<h1 class="wv-heading--title">
						Informar un pago</h1>
				 </div>
				</div>
				<div class="row">
			 <div class="col-md-4 mx-auto">
				   <div class="myform form ">
						 <form id="formulario" name="formulario" method="POST" action="" enctype="multipart/form-data">
 
				<div class="form-group">
					<label for="direccion">Dirección del consorcio</label><span class="requerido">*</span>
					<input class="form-control my-input" type="text" name="direccion" id="direccion" placeholder="Introduzca la direccion" required>
				</div>
 
				<div class="form-group">
					<label for="unidad">Unidad funcional/departamento</label><span class="requerido">*</span>
					<input class="form-control my-input" type="text" name="unidad" id="unidad" placeholder="Introduce la unidad">
				</div>
 
				<div class="form-group">
					<label for="importe">Importe pagado</label><span class="requerido">*</span>
					<input class="form-control my-input" type="number" name="importe" id="importe" size="30" required placeholder="Importe pagado">
				</div>
 
				<div class="form-group">
					<label for="fecha">Fecha de pago</label><span class="requerido">*</span>
					<input class="form-control my-input" type="date" name="fecha" id="fecha" placeholder="Introduce la fecha de pago" required>
				</div>
 
				<div class="form-group">
					<label for="mensaje">Información adicional</label><span class="requerido">*</span>
					<textarea class="form-control my-input" id="mensaje" name="mensaje" placeholder="Detalle su forma de pago: transferencia o depósito bancario" required></textarea>
				</div>
 
				<div class="form-group">
					<label for="asunto">Agregar un archivo</label>
					<input type="file" name="adjunto" id="adjunto" required></input>
				</div>
 
				<p class="submit">
					<input type="submit" id="submit" value="Enviar">
				</p>
			</form>
		</div>
	</div>
</div>
</div>
 
<div class="col-md-6 mx-auto text-center">
	 <div class="header-title">
		<h1 class="wv-heading--title">
			<!--
				Aquí pondremos el mensaje cuando enviemos el mensaje
			-->
			<div id="correcto"><?php if( $enviado && $errores === null ) {
				echo $mensaje_correcto;
			} ?></div>
			</div></h1>
	 </div>
	</div>
</section>
<!-- Footer -->
<footer class="footer py-4 bg-dark">
<div class="container">
<div class="row">
<div class="col-sm">
	<img src="../img/logo_h_byn.png" alt="">
</div>
<hr class="my-4">
<div class="col-sm">
	<ul class="list-unstyled">
		<li class="nav-item"><a class="nav-link js-scroll-trigger" href="#servicios">Servicios</a></li>
		<li class="nav-item"><a class="nav-link js-scroll-trigger" href="#consorcistas">Consorcistas</a></li>
		<li class="nav-item"><a class="nav-link js-scroll-trigger" href="#empresa">Empresa</a></li>
		<li class="nav-item"><a class="nav-link js-scroll-trigger" href="#ubicacion">Ubicación</a></li>
		<li class="nav-item"><a class="nav-link js-scroll-trigger" href="#contact">Contacto</a></li>
	</ul>
</div>
<hr class="my-4">
<div class="col-sm">
	<ul class="list-unstyled">
		<li>
			<i class="fas fa-envelope fa-1x"></i>
			<a href="mailto:info@admanasto.com.ar">info@admanasto.com.ar</a>
		</li>
		<li>
			<i class="fas fa-map-marker fa-1x"></i>
			<span>Timbó 1816, Flores, Capital Federal</span>
		</li>
		<li>
			<i class="fas fa-phone fa-1x"></i>
			<span>4876-6985</span>
		</li>
		<li>
			<i class="fab fa-whatsapp fa-1x"></i>
			<span>15-1848-4562</span>
		</li>
	</ul>
</div>
</div>
</footer>
<!-- Bootstrap core JS-->
			<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
			<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.0/js/bootstrap.bundle.min.js"></script>
			<!-- Third party plugin JS-->
			<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.4.1/jquery.easing.min.js"></script>
			<!-- Contact form JS-->
			<!-- Core theme JS-->
			<script type="text/javascript" src="js/script.js"></script>
			<script src="/js/scripts.js"></script>
			<script src="https://use.fontawesome.com/releases/v5.13.0/js/all.js" crossorigin="anonymous"></script>
 
		<script>
			window.ec_form_messages = {
				correcto: "<?php echo $mensaje_correcto ?>",
				error: <?php echo json_encode($mensajes_error) ?>
			}
		</script>
	</body>
</html>
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
sin imagen de perfil
Val: 22
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Formulario php y ajax envia muchas veces

Publicado por lucas (8 intervenciones) el 08/10/2020 15:58:58
MESSAGE.PHP

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<?php
 
//-------------------------------------------------------------------
// VARIABLES DEL MENSAJE
$mensaje = preg_replace('/\n/','<br>',htmlspecialchars(urldecode($_POST['mensaje'])));
$importe = urldecode($_POST['importe']);
//$email = urldecode($_POST['email']);
//$asunto = urldecode($_POST['asunto']);
$direccion = urldecode($_POST['direccion']);
$unidad = urldecode ($_POST['unidad']);
$fecha = ($_POST['fecha']);
 
// Título del mensaje
$titulo = "Nuevo pago de $direccion para Administración Anastópulos";
 
// El cuerpo del mensaje
$data = "";
 
 
// Definir si es una solicitud AJAX
define('IS_AJAX', isset($_GET['ajax']) && $_GET['ajax'] === 'true');
 
// Aquí almacenaremos los errores
$errores = array();
 
// Variables para manejar el adjunto
$hay_adjunto = false;
$adjunto = null;
$boundary = null;
 
/*
 * Si hay archivos, hay que cambiar el inicio del mensaje y crear un separador (boundary)
 */
if( isset($_FILES['adjunto']) && $_FILES['adjunto']['error'] === 0) {
    $hay_adjunto = true;
    $adjunto = $_FILES['adjunto'];
    $boundary = md5(time());
    $data = "--".$boundary. "\r\n";
    // Y el comienzo del HTML
    $data .= "Content-Type: text/html; charset=\"utf-8\"\r\n";
    $data .= "Content-Transfer-Encoding: 8bit\r\n\r\n";
}
 
/*
 * Comprobaciones de los campos requeridos
//  */
// if( ! filter_var($email, FILTER_VALIDATE_EMAIL) )
// 	$errores[] = $mensajes_error['email'];
if( ! isset($_POST['mensaje']) )
    $errores[] = $mensajes_error['mensaje'];
if( ! isset($_POST['importe']) )
    $errores[] = $mensajes_error['importe'];
if( ! isset($_POST['unidad']) )
    $errores[] = $mensajes_error['unidad'];
if( ! isset($_POST['direccion']) )
    $errores[] = $mensajes_error['direccion'];
if( ! isset($_POST['fecha']) )
    $errores[] = $mensajes_error['fecha'];
// El mensaje HTML
$data .= "<div class='mensaje'>
        <h1>Nuevo mensaje de $direccion</h1>
        <p><strong>Dirección del consorcio:</strong> $direccion</p>
        <p><strong>Unidad funcional/departamento</strong> $unidad</p>
        <p><strong>Importe pagado:</strong> $importe</p>
        <p><strong>Fecha de pago</strong> $fecha</p>
        <p><strong>Mensaje:</strong><br>$mensaje</p>
    </div>";
// Las cabeceras empiezan igual
$cabeceras = "MIME-Version: 1.0\r\n";
$cabeceras .= "From: $direccion<$email>\r\n";
$cabeceras .= "To: $receptor\r\n";
// Si no hay errores probamos a enviar el archivo
if( count($errores) === 0 ) {
    // Content-Type dependiente de si hay adjunto
    if( $hay_adjunto ) {
        $cabeceras .= "Content-Type: multipart/mixed; boundary=\"".$boundary."\"";
        // Si hay archivo
        // También añadimos al cuermo del mensaje un separador
        $data .= "\r\n";
        $data .= "--" . $boundary . "\r\n";
        // Y el archivo con su correspondiende Content-Type (octet-stream para aplicaciones) y nombre
        $data .= "Content-Type: application/octet-stream; name=\"".$adjunto['name']."\"\r\n";
        $data .= "Content-Transfer-Encoding: base64\r\n";
        // Indicamos que es un adjunto
        $data .= "Content-Disposition: attachment\r\n\n\r";
        // Vamos con el adjunto: chunk_split transforma la cadena en base64 en estandar
        $data .= chunk_split(base64_encode(file_get_contents($adjunto['tmp_name']))) . "\r\n";
        // Acabamos el mensaje
        $data .= "--" . $boundary . "--";
    } else {
        // Si no lo hay nos bastará con decir que es un mensaje HTML
        $cabeceras .= "Content-type: text/html; charset=utf-8\r\n";
    }
    // Enviamos nuestro email y damos cuenta sy hay algún error
    if(mail($receptor, $titulo, $data, $cabeceras, '-f pagos@admanasto.com.ar')) {
        // Si no hay ningún error, lo indicamos con null
        $errores = null;
    } else {
        // Si no indicamos que hubo un error
        $errores[] = "Hubo un error al enviar el e-mail";
    }
}
// Si es una solicitud AJAX, enviamos el JSON y no ejecutamos más código
if( IS_AJAX ) {
    echo json_encode(array(
        'success' => $errores === null,
        'errors' => $errores,
        'has_files' => $hay_adjunto
    ));
    exit;
}
// Si no ahora vendría el documento (index.php)
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
sin imagen de perfil
Val: 22
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Formulario php y ajax envia muchas veces

Publicado por lucas (8 intervenciones) el 08/10/2020 15:59:34
SCRIPT.JS

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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
(function(window, document) {
	if( ! document.querySelectorAll ) {
		return false;
	}
 
	window.ec_form_messages = window.ec_form_messages || { error: {} };
	// Abreviar document.getElementById
	function $(id){
		return document.getElementById(id);
	}
	function log() {
		return window.console && console.log(arguments);
	}
 
	/*
		Variables para evitar acceder al DOM muchas veces,
		y abreviar
	*/
	var form = $('formulario'),
		error = $('error'),
		success = $('success'),
		inputs = form.querySelectorAll('input[name], textarea[name], select[name]'),
		elements = {},
		i = 0;
 
	for(; inputs[i]; i++) {
		elements[inputs[i].getAttribute('name')] = inputs[i];
	}
 
	function getValue(element) {
		switch(element.nodeName.toLowerCase()){
			case 'input':
				return element.getAttribute('type').toLowerCase() === "file" ? element.files[0] : element.value;
				// No hace falta break; (se ha acabado la funcion)
			case 'select':
				return element.options[element.selectedIndex].value;
			case 'textarea':
			default:
				return element.value;
		}
	}
 
	function getElementsData() {
		var ret = {},
			i;
		// Creamos un objeto con los valores de cada elemento
		for( i in elements ) {
			if( elements.hasOwnProperty(i) ) {
				ret[i] = getValue(elements[i]);
			}
		}
		return ret;
	}
 
	// Comprobar e-mail y cadena vacía
	function emailVerification(valor){
		// Expresión regular para validar el email (http://stackoverflow.com/questions/46155/validate-email-address-in-javascript)
		// Yo había hecho una propia, pero no estoy en mi ordenador, y esta parece funcionar bien
		var regex = /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/
 
		return regex.test(valor);
	}
	function estaVacio(valor){
		return valor === "";
	}
 
	// Función que sucederá cada vez que el formulario se envía
	function onsubmit(e){
		var errores = [],
			valores = getElementsData(),
			hasFile;
 
		e = e || window.event;
 
		if( ! e.preventDefault ) {
			e.preventDefault = function() {
				e.returnValue = false;
			}
		}
 
		// comprobamos errores (prefiero mostrarlos normalmente quitando el required)
		if( estaVacio(valores.nombre)){
			errores.push(window.ec_form_messages.error.nombre);
		}
		if( estaVacio(valores.mensaje) ){
			errores.push(window.ec_form_messages.error.mensaje);
		}
 
		// Si hay errores no enviamos el formulario
		if(errores.length){
			error.innerHTML = '<ul><li>' + errores.join('</li><li>') + '</li></ul>';
			e.preventDefault();
			return false;
		}
 
		// Si no hay errores, ponemos la lista de errores vacíos
		error.innerHTML = '';
 
		hasFile = !! valores.adjunto;
 
 
		// Si no hay la tecnología necesaria para enviar el formulario con el archivo via AJAX,
		// Lo enviamos via HTTP (dejamos que se ejecute normalmente)
		if( hasFile && ! window.FormData ) {
			return true;
		}
 
		if( window.FormData ) {
			valores = new FormData(form);
		} else {
			valores = convertirObjeto(valores);
		}
 
		enviarform(valores, hasFile);
 
		e.preventDefault();
 
		return false;
	}
 
	// Función mediante la que enviámos el formulario
	function enviarform(data, hasFile){
		var request = new window.XMLHttpRequest();
 
		request.open("POST", '?ajax=true', true);
		if( ! hasFile && ! window.FormData ) {
			request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		}
		request.onreadystatechange = function(){
			var response;
			if( request.readyState === 4 ){
				response = JSON.parse(request.responseText);
				if( response.errors ){
					return error.innerHTML = "<ul><li>" + response.errors.join("</li><li>") + "</li></ul>"
				}
				// Si está todo correcto mostramos el mensaje y ocultamos el formulario
				correcto.innerHTML = window.ec_form_messages.correcto;
				form.style.display = "none";
			}
		}
		request.send(data);
	}
 
	// Convierte un objeto en una cadena de texto preparada para ser enviada al servidor
	function convertirObjeto(obj){
		var ret = '',
		key, current = 0;
		for (key in obj){
			ret += ((current === 0 ? '' : '&') + key + '=' + encodeURIComponent(obj[key]) );
			current++
		}
		return ret;
	}
 
	/*
		Si no está javascript activado y es un navegador moderno, el navegador comprobará los campos por nosotros
		Si sí lo está, prefiero comprobarlos y mostrar los errores en conjunto.
	*/
	elements.nombre.required = elements.direccion.required = elements.mensaje.required = false;
 
 
	// Añadimos el evento cuando el formulario va a ser enviado
	form.addEventListener ? form.addEventListener('submit', onsubmit, false): form.attachEvent('onsubmit', onsubmit)
 
})(window, document, undefined)
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
Imágen de perfil de Yoel
Val: 617
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Formulario php y ajax envia muchas veces

Publicado por Yoel (198 intervenciones) el 08/10/2020 16:39:07
Hola, he estado viendo tu código, si lo que quieres hacer es un envío de correo lo puedes simplificar un poco usando $.ajax() donde capturas el evento submit de tu botón enviar, a la hora de enviar el formulario y pasar los datos al php para que se te realice el envío del correo. Te dejo un ejemplo genérico para que veas como es.

Gracias

En el javascript

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//envio de correo de Informes
$("#from_send1").submit(function () {
 
    //Enviamos los datos del formulario
 
    var dataString = $(this).serialize(); //Capturamos todos los datos del formulario
    $.ajax({
        type: "POST",
        dataType: "json",
        url: "script de php donde se capturan los datos para el envío",
        data: dataString,
        success: function (data) {
                alert('El correo ha sido enviado');
        }
    });
    return false;
});

En el html

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
<form  id="from_send1" method="post" action="script de php donde se capturan los datos para el envío"
 
<div class="form-group">
<label for="direccion">Dirección del consorcio</label><span class="requerido">*</span>
<input class="form-control my-input" type="text" name="direccion" id="direccion" placeholder="Introduzca la direccion" required>
</div>
 
<div class="form-group">
<label for="unidad">Unidad funcional/departamento</label><span class="requerido">*</span>
<input class="form-control my-input" type="text" name="unidad" id="unidad" placeholder="Introduce la unidad">
</div>
 
<div class="form-group">
<label for="importe">Importe pagado</label><span class="requerido">*</span>
<input class="form-control my-input" type="number" name="importe" id="importe" size="30" required placeholder="Importe pagado">
</div>
 
<div class="form-group">
<label for="fecha">Fecha de pago</label><span class="requerido">*</span>
<input class="form-control my-input" type="date" name="fecha" id="fecha" placeholder="Introduce la fecha de pago" required>
</div>
 
<div class="form-group">
<label for="mensaje">Información adicional</label><span class="requerido">*</span>
<textarea class="form-control my-input" id="mensaje" name="mensaje" placeholder="Detalle su forma de pago: transferencia o depósito bancario" required></textarea>
</div>
 
<div class="form-group">
<label for="asunto">Agregar un archivo</label>
<input type="file" name="adjunto" id="adjunto" required></input>
</div>
 
<p class="submit">
<input type="submit" id="submit" value="Enviar">
</p>
 
</form>

Nota: en este ejemplo no se está manejando la subida de archivos al servidor, solo la captura de los datos para enviarlos a php.
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
sin imagen de perfil
Val: 22
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Formulario php y ajax envia muchas veces

Publicado por lucas (8 intervenciones) el 08/10/2020 17:07:53
Muchas gracias Yoel, el archivo de js que yo tengo si lo reemplazo por este funcionaria? o tengo que agregarlo al que tengo?
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
Imágen de perfil de Yoel
Val: 617
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Formulario php y ajax envia muchas veces

Publicado por Yoel (198 intervenciones) el 08/10/2020 17:15:52
Hola lucas, este código es independiente a al que tu tienes, lo único que tienes es que tomar en cuenta de agregar Jquery
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
sin imagen de perfil
Val: 22
Ha aumentado su posición en 2 puestos en PHP (en relación al último mes)
Gráfica de PHP

Formulario php y ajax envia muchas veces

Publicado por lucas (8 intervenciones) el 08/10/2020 17:21:16
Ok, y en el action del form podria usar el message.php para capturar los datos? porque necesito que se pueda adjuntar imágenes...
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
Imágen de perfil de Yoel
Val: 617
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Formulario php y ajax envia muchas veces

Publicado por Yoel (198 intervenciones) el 08/10/2020 17:35:16
Si el script que tu vallas a usar lo colocas en los dos lugares tanto en el ajax como el from
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