как привязать в форме регистрации ajax и redbeen?

Как заставить мою форму регистрации работать через ajax? Она не отправляется на сервер. Без ajax всё работает.

// js/reg.js и здесь явно что-то не так
$(document).ready(function () {
    $('#form1').submit(function (e) {
        e.preventDefault();
        var formNm = $(this);
        $.ajax({
            type: 'POST',
            url: 'php/signup.php', // Обработчик формы отправки
            data: formNm.serializeArray(),
            success: function (data) { //в случае успеха выводим результаты в div "results"
                // Вывод текста результата отправки в текущей форме
                $(formNm).html(data);
                // Перезагрузка формы через 3 секунды
                setTimeout(function() { $("#form1").load("http://ra1s/reg.html #imputs-reg") }, 200);
            }
        });
        return false;
    });
});
<?php 
  include 'php/signUp.php';

?>

<form method="POST" class="form" id="form1">
                  <div id="imputs-reg">
                    <h2 class="form__title">Зарегистрироваться</h2>
                    <input type="text" placeholder="User" class="input" name="login" value="<?php echo @$data['login']; ?>"><br/>
                    <input type="email" placeholder="Email" class="input" name="email" value="<?php echo @$data['email']; ?>"><br/>
                    <input type="password" placeholder="Password" class="input" name="password" value="<?php echo @$data['password']; ?>"><br/>
                    <input type="password" placeholder="Password" class="input" name="password_2" value="<?php echo @$data['password_2']; ?>"><br/>
                    <strong><?php captcha_show(); ?></strong>
                      <input type="text" name="captcha" ><br/>
                    <button class="btn-reg" type="submit" name="do_signup">Зарегистрироваться</button>
                  </div>
                </form>
// signup.php
<?php 
    require 'db.php';

    $data = $_POST;

    function captcha_show(){
        $questions = array(
            1 => 'Столица России',
            2 => 'Столица США',
            3 => '2 + 3',
            4 => '15 + 14',
            5 => '45 - 10',
            6 => '33 - 3'
        );
        $num = mt_rand( 1, count($questions) );
        $_SESSION['captcha'] = $num;
        echo $questions[$num];
    }

    //если кликнули на button
    if ( isset($data['do_signup']) )
    {
    // проверка формы на пустоту полей
        $errors = array();
        if ( trim($data['login']) == '' )
        {
            $errors[] = 'Введите логин';
        }

        if ( trim($data['email']) == '' )
        {
            $errors[] = 'Введите Email';
        }

        if ( $data['password'] == '' )
        {
            $errors[] = 'Введите пароль';
        }

        if ( $data['password_2'] != $data['password'] )
        {
            $errors[] = 'Повторный пароль введен не верно!';
        }

        //проверка на существование одинакового логина
        if ( R::count('users', "login = ?", array($data['login'])) > 0)

        {
            $errors[] = 'Пользователь с таким логином уже существует!';
        }
    
    //проверка на существование одинакового email
        if ( R::count('users', "email = ?", array($data['email'])) > 0)
        {
            $errors[] = 'Пользователь с таким Email уже существует!';
        }

        //проверка капчи
        $answers = array(
            1 => 'москва',
            2 => 'вашингтон',
            3 => '5',
            4 => '29',
            5 => '35',
            6 => '30'
        );
        if ( $_SESSION['captcha'] != array_search( mb_strtolower($_POST['captcha']), $answers ) )
        {
            $errors[] = 'Ответ на вопрос указан не верно!';
        }


        if ( empty($errors) )
        {
            //ошибок нет, теперь регистрируем
            $user = R::dispense('users');
            $user->login = $data['login'];
            $user->email = $data['email'];
            $user->password = password_hash($data['password'], PASSWORD_DEFAULT); //пароль нельзя хранить в открытом виде, мы его шифруем при помощи функции password_hash для php > 5.6
            R::store($user);
            echo '<div style="color:dreen;">Вы успешно зарегистрированы!</div><hr>';
        }else
        {
            echo '<div id="errors" style="color:red;">' .array_shift($errors). '</div><hr>';
        }

    }

?>
// db.php
<?php 
require 'libs/rb.php';
R::setup( 'mysql:host=127.0.0.1;dbname=ra1s','root', '' ); 

if ( !R::testconnection() )
{
        exit ('Нет соединения с базой данных');
}

session_start();

Ответы (2 шт):

Автор решения: Andrey Rais

удалось сделать рабочий вариант, но мне очень не нравится. Так как всё-равно идет перезагрузка страницы, а не формы

$(document).ready(function () {
    $('form[data-action]').submit(function(e) {
        e.preventDefault();
        var formNm = $(this);
        $.ajax({
            url: this.getAttribute('data-action'), //полученный url из атрибута data-action
            type: 'post',
            dataType: 'html',
            data: new FormData($(this)),
            contentType: false,
            processData: false,
            success: function(data) { //в случае успеха выводим результаты в div "results"
                // Вывод текста результата отправки в текущей форме
                $(formNm).html(data);
                // Перезагрузка формы через 3 секунды
                setTimeout(function() { $("#form1").load("http://ra1s/reg.html #imputs-reg") }, 200);
            }
        });
        return false;
    });
→ Ссылка
Автор решения: Andrey Rais

Может кто-нибудь поможет хотя бы? Я не прошу делать за меня

→ Ссылка