Ajax запрос в снипет
Делаю регистрацию через простую форму. Но почему то js не видит ответ от сервера. Снипет вызываю на этой же странице где и форма.
А если указать прямой путь до файла php не происходит регистрация.
Скрипт:
<script>
$(document).ready(function() {
$("#add_users").on("submit", function () {
$.ajax({
url: document.location.href,
method: "post",
data: {
add_users: "1",
user_name: $("#user_name").val(),
user_email: $("#user_email").val()
},
success: function (data) {
if (data == "error_name") {
notyf.error('[[++cultureKey:is=`uk`:then=`Заповніть поля`]][[++cultureKey:is=`ru`:then=`Заполните поля`]]');
}
if (data == "error_email") {
notyf.error('[[++cultureKey:is=`uk`:then=`Заповніть поля`]][[++cultureKey:is=`ru`:then=`Заполните поля`]]');
}
if (data == "users_error") {
notyf.error('[[++cultureKey:is=`uk`:then=`Даний користувач вже існує`]][[++cultureKey:is=`ru`:then=`Данный пользователь уже существует`]]');
}
if (data == "users_ok") {
notyf.error('[[++cultureKey:is=`uk`:then=`Користувач доданий`]][[++cultureKey:is=`ru`:then=`Пользователь добавлен`]]');
}
},
error: function () {
alert(data);
}
return false;
});
});
</script>
Снипет:<?php
if ($_POST['add_users'] == "1")
{
if (empty($_POST['user_name']))
{
echo "error_name";
}
elseif (empty($_POST['user_email']))
{
echo "error_email";
}
else {
//Получаем данные с полей
$name = $_POST['user_name'];
$email = $_POST['user_email'];
// получаем объект класса modUser
$user = $modx->getObject('modUser', array(
'username' => $email
));
// если пользователя нет на сайте
if (!is_object($user))
{
//создаем объект пользователя
$user = $modx->newObject('modUser');
// устанавливаем имя и пароль
$user->set('username', $email);
//Генерация уникального пароля
$password_generation = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
$password = substr(str_shuffle($password_generation) , 0, 32);
$user->set('password', $password);
//Создаем объект профиля пользователя
$profile = $modx->newObject('modUserProfile');
// заполняем профиль данными
$profile->set('fullname', $name);
$profile->set('email', $email);
$profile->set('phone', '22-22-22');
$profile->set('mobilephone', '+79057778899');
$profile->set('fax', '33-33-33');
$profile->set('address', 'г. Москва, ул. Ломоносова д. 31');
$profile->set('city', 'Москва');
$profile->set('state', 'Московская область');
$profile->set('zip', '101000');
$profile->set('country', 'Россия');
$profile->set('website', 'www.yandex.ru');
$profile->set('photo', 'assets/images/myphoto.jpg');
$profile->set('comment', 'Создаю сайты');
$profile->set('dob', strtotime('1984-12-12'));
$profile->set('gender', '1');
//получаем доступ к дополнительным полям
$fields = $profile->get('extended');
// добавляем данные в массив
$fields['bank'] = 'Сбербанк';
$fields['account'] = '40702810500000000001';
$fields['kor-account'] = '3010100000000000001';
$fields['bik'] = '045805777';
// добавляем данные к профилю
$profile->set('extended', $fields);
// осуществляем связь modUser с modUserProfile
$user->addOne($profile);
// сохраняем оба объекта
$profile->save();
$user->save();
//
echo "users_ok";
//Отправка данных пользователю
ini_set('display_errors', 1);
error_reporting(E_ALL);
$from = "";
$to = $email;
$subject = "Checking PHP mail";
$message = "<p>Login: " . $email . "</p></br><p>Password: " . $password . "</p>";
$headers = "From:" . $from;
mail($to, $subject, $message, $headers);
}
else
{
echo "users_error";
}
}
}
Поблагодарить автора
Отправить деньги
Комментарии: 4
попробуй в запрос ajax вставить dataType: 'html'
Спасибо за ответ.
Пробовал. Ответ то приходит. Но почему то JS его не видит.
Пробовал. Ответ то приходит. Но почему то JS его не видит.
console.log(data)
Короче я баран, инфа 100%. Нужно было после вывода echo поставить exit();. А то мне верталась вся страница в ответе и само собой что ничего не работало. Спасибо что заставил меня логично посмотреть на свой же код.
Если кому то нужно юзайте мой код для добавления пользователей.
Если кому то нужно юзайте мой код для добавления пользователей.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.