Не возвращает мне ответ AJAX
Хорошо у меня есть регистрационная форма, в которой они заполняют данные, и через AJAX я вставляю данные в базу данных. До сих пор он работал идеально и возвращал мне ответ в режиме уведомления с TOAST.
но когда вы помещаете в файл, который также отправляет его по почте, уведомление перестает работать, но если вы вставляете запись. Я подробно расскажу вам код.
Аякс
$(function(){
$("#formuploadajax1").on("submit", function(e){
e.preventDefault();
if (comprobar_dni($('#nif').val()) == false) {
toastr["error"]("El DNI/NIF no es correcto!", "Mensaje");
return;
}
var f = $(this);
var formData = new FormData(document.getElementById("formuploadajax1"));
formData.append("dato", "valor");
//formData.append(f.attr("name"), $(this)[0].files[0]);
$.ajax({
url: "incluCuenta/insertar-cliente.php",
type: "post",
dataType: "html",
data: formData,
cache: false,
contentType: false,
processData: false
})
.done(function(res){
if(res=="1"){
toastr["info"]("Registro exitoso!", "Mensaje")
setTimeout(function () {
window.location.href = "login.php"; //will redirect to your blog page (an ex: blog.html)
}, 1500); //will call the function after 2 secs
}else{
$("#mensaje").html(res);
toastr["error"]("Utiliza otro usuario!", "Mensaje")
}
});
});
});
что делает меня сейчас, так это то, что я вытащите из (res) я получаю значение, которое находится в "else"
я подробно insertar-cliente.php это немного долго будет иметь прокрутку
<?php
include "../conexion/conexion.php";
mysqli_set_charset($mysqli, "utf8");
$results = 'SELECT * FROM Usuarios';
$rec = mysqli_query($mysqli, $results);
if ($rec === false) {
die('ERROR SQL: ' . htmlspecialchars(mysqli_error($mysqli)));
}
while ($results = mysqli_fetch_object($rec)) {
if(mb_strtolower($results->Username) == mb_strtolower($_POST['email']))
{
die('<div class=\'form\'>
<div class="alert alert-danger" style="font-size: 14px;"><strong>¡Error!</strong> Este usuario ya esta en uso.</div>
</div>');
}
}
$name = mysqli_real_escape_string($mysqli, $_POST['name']);
$email = mysqli_real_escape_string($mysqli, $_POST['email']);
$telefono = mysqli_real_escape_string($mysqli, $_POST['telefono']);
$movil = mysqli_real_escape_string($mysqli, $_POST['movil']);
$nif = mysqli_real_escape_string($mysqli, $_POST['nif']);
$direccion = mysqli_real_escape_string($mysqli, $_POST['direccion']);
$postal = mysqli_real_escape_string($mysqli, $_POST['postal']);
$poblacion = mysqli_real_escape_string($mysqli, $_POST['poblacion']);
$provincia = mysqli_real_escape_string($mysqli, $_POST['provincia']);
$pass = mysqli_real_escape_string($mysqli, $_POST['pass']);
$sexo = mysqli_real_escape_string($mysqli, $_POST['sexo']);
$fecha = date('y,m,d');
$results = "
INSERT INTO Usuarios (
Fecha,
Sexo,
Nombre,
Password,
Username,
Direccion,
Postal,
Poblacion,
Provincia,
Telefono,
Movil,
Dni,
intestado
) VALUES (
'$fecha',
'$sexo',
'$name',
'$pass',
'$email',
'$direccion',
'$postal',
'$poblacion',
'$provincia',
'$telefono',
'$movil',
'$nif',
'1'
)
";
if (mysqli_query($mysqli, $results) === false) {
die('Error SQL: ' . htmlspecialchars(mysqli_error($mysqli)));
}
echo "1";
include "../plantillaEmail/template.php";
include "../PHPMailer/class.phpmailer.php";
include "../PHPMailer/class.smtp.php";
$email_user = "usuario";
$email_password = "pass";
$the_subject = "Bienvenid@ $name";
$address_to = "$email";
$from_name = "Depildiodo";
$phpmailer = new PHPMailer();
$phpmailer->Username = $email_user;
$phpmailer->Password = $email_password;
$phpmailer->CharSet = 'UTF-8';
$phpmailer->SMTPSecure = 'ssl';
$phpmailer->Host = "mail.depildiodo.com"; // GMail
$phpmailer->Port = 465;
$phpmailer->IsSMTP(); // use SMTP
$phpmailer->SMTPAuth = true;
$phpmailer->setFrom($phpmailer->Username,$from_name);
$phpmailer->AddAddress($address_to); // recipients email
$phpmailer->Subject = $the_subject;
$phpmailer->Body = $body;
$phpmailer->IsHTML(true);
$phpmailer->Send();
?>
проблема заключается в добавлении include "../plantillaEmail/template.php";
, чтобы поместить эту строку, которая печатает мне шаблон почты и больше не получает уведомление хорошо.
В template.php
<?php $body="aqui esta todo el contenido de la plantilla";?>
2 answers
Уже попробовали использовать typeof вместо ==, то есть в if, вы можете использовать, if(typeof res == 'number' && parseInt(res)==1), скорее всего, ответа не будет бросать в правильный формат, другой метод заключается в использовании console.log(res); для а отдельные результаты.
Вы также можете увидеть с
.done(function(res){
res = parseInt(res.trim().replace(/\D+/g, ""));
if(res==1){}
else{}
})
Скорее всего, вы не получаете HTTP-ответ правильно, он должен быть 200
//Indicas todos los campos que necesites por POST
$need = array(
"name",
"email",
"telefono",
"movil",
"nif",
"direccion",
"postal",
"poblacion",
"provincia",
"pass",
"sexo",
"fecha",
);
$var = array();
foreach ($need as $key) {
/*En caso de que no tengas el campo por POST*/
if (!empty($_POST[$key])) {
switch ($key) {
case 'name':
return "Necesitas un nombre";
break;
/*
Continuas las validaciones
*/
default:
# code...
break;
}
}
/*En caso de que el campo sea válido*/
else{
$var[$key] = mysqli_real_escape_string($mysqli,$_POST[$key]);
}
}
$fecha = date('y,m,d');
print_r($var);