Ajax запрос в снипет
Привет всем. Подскажите как сделать отправку данных из формы через 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
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Пробовал. Ответ то приходит. Но почему то JS его не видит.
Если кому то нужно юзайте мой код для добавления пользователей.