Отправка сообщений из php в ajax
Сразу извиняюсь за тему дубликат, но там я так и не смог найти решение проблемы. В кратце: на страница форма регистрации, пользователь жмет на кнопку и данные отправляются в php, скрипт пхп записывает данные в БД и отправляет письмо с активацией на почту юзеру, также прописаны проверки и оповещения, оповещения отправляются в формате json на ajax, но у аякса всегда срабатывает событие error, а не success, но при этом пхп скрипт отрабатывает корректно и отправляет письмо на почту. Выяснил что виновником являлась библиотека phpMailer, которая служит для отправки сообщений юзерам. Без неё события success отрабатывает. Попрорборвал использовать стандартную php функцию mail(), но с ней та же история. Как решить проблему? Javascript:
('.login__form').submit(function(e) {
e.preventDefault();
$.ajax({
url: 'Registration.php',
type: 'POST',
data: {
login: login,
password: pass1,
email: email,
referral: referral
},
success: function(res) {
console.log(res);
console.log(res.message);
console.log(res.color);
if (res.color=='green'){
Notification(res.message);
}
else{
$('.alert').css('background',res.color);
Notification(res.message);
return false
}
},
error: function(jqXhr, textStatus, errorMessage,res) {
console.log($.parseJSON(res));
$('.alert').css('background','red');
Notification('Error!');
console.log("Error: ", errorMessage);
}
});
});
PHP:
$success = mail($to, $subject, $message, $headers);
if ($success) {
$message = 'Message send! Check your E-mail for confirm registration!';
$color = 'green';
$out = array(
'message' => $message,
'color' => $color
);
header('Content-Type: application/json');
echo json_encode($out);
}
Ошибка
Error: SyntaxError: Unexpected token < in JSON at position 0
at JSON.parse (<anonymous>)
at n.parseJSON (VM27 jquery.min.js:4)
at zb (VM27 jquery.min.js:4)
at z (VM27 jquery.min.js:4)
at XMLHttpRequest.<anonymous> (VM27 jquery.min.js:4)
Ответы (1 шт):
Если все так корректно и безошибочно, после application/json, можете сами отдать код 200, тогда придет в событие success однозначно.
https://www.php.net/manual/ru/function.http-response-code.php