@tibirlayn
студент

Как получить Ajax ответ?

Делаю простую форму регистрации, отправляю данные с помощью ajax в php обработчик. php обработчик проверят на уже существующие данные (login и email) и записывает данные в бд или выдает ошибку если данные в бд уже есть.
Ajax все отправляет и php обработчик все проверяет и записывает в бд, но ответ получить в success не получается.
Пробовал через json, но не получается.
Как я думаю function (data) не получает параметры с php обработчика, но почему?

Форма
<form class="col s12" id="form">
                        <div class="row">
                            <div class="input-field row s6">
                                <i class="material-icons prefix">person</i>
                                <input id="icon_name" name="name" type="text" class="validate">
                                <label id="icon_name_error" for="icon_name">Name</label>
                                <span class="helper-text"><label id="icon_name-error" class="error" for="icon_name"></label></span>
                            </div>

                            <div class="input-field row s6">
                                <i class="material-icons prefix">account_circle</i>
                                <input id="icon_login" name="login" type="text" class="validate">
                                <label id="icon_login_error" for="icon_login">Login</label>
                                <span class="helper-text"><label id="icon_login-error" class="error" for="icon_login"></label></span>
                            </div>
                            <div class="input-field row s6">
                                <i class="material-icons prefix">markunread</i>
                                <input id="icon_email" name="email" type="email"  class="validate">
                                <label id="icon_email_error" for="icon_email">Email</label>
                                <span class="helper-text"><label id="icon_email-error" class="error" for="icon_email"></label></span>
                            </div>
                            <div class="input-field row s6">
                                <i class="material-icons prefix">lock</i>
                                <input id="icon_password" name="password" type="password"  class="validate">
                                <label id="icon_password_error" for="icon_password">Password</label>
                                <span class="helper-text"><label id="icon_password_error" class="error" for="icon_password"></label></span>
                            </div>
                            <div class="input-field row s6">
                                <i class="material-icons prefix">lock_outline</i>
                                <input id="icon_r_password" name="r_password" type="password" class="validate">
                                <label id="icon_r_password_error" for="icon_r_password">Repeat password</label>
                                <span class="helper-text"><label id="icon_r_password-error" class="error" for="icon_r_password"></label></span>
                            </div>
                        </div>
                        <div class="right-align">
                            <button class="btn waves-effect waves-light btn-large" id="submit" type="submit" name="reg_submit">Регистрация
                                <i class="material-icons right">send</i>
                            </button>
                        </div>
                    </form>

Ajax
$("form").submit(function(){
            if($("#form").valid()){
                $.ajax({
                    type: "POST",
                    url: "aith_registration.php",
                    data: $(this).serialize(),
                    success : function(data) {
                        if (data[0]) {
                            M.toast({html: 'Поздравляю, вы зарегистрировались!'});
                        } else {
                            M.toast({html: 'Данные уже существуют!'});
                        }
                    },
                    dataType: 'json'
                });
                return false;
            }
        });

PHP обработчик
<?php
        include("connection_info.php");
        $link = mysqli_connect(con_localhost, con_user, con_password, con_db);

        $name = mysqli_real_escape_string($link, trim($_POST['name']));
        $login = mysqli_real_escape_string($link, trim($_POST['login']));
        $email = mysqli_real_escape_string($link, trim($_POST['email']));
        $password = mysqli_real_escape_string($link, trim($_POST['password']));
        $r_password = mysqli_real_escape_string($link, trim($_POST['r_password']));
        $errors = array();



        $query_login = "SELECT * FROM  `users` WHERE login = '$login'";
        $data_login = mysqli_query($link, $query_login);
        if (mysqli_num_rows($data_login) != 0) {
            $errors[] = 'Пользователь с таким логином уже существует!';
        }
        $query_email = "SELECT * FROM `users` WHERE email = '$email'";
        $data_email = mysqli_query($link, $query_email);
        if (mysqli_num_rows($data_email) != 0) {
            $errors[] = 'Пользователь с таким email уже существует!';
        }
        if (empty($errors)) {
            $query = "INSERT INTO `users` (name, login, email, password) VALUES ('$name', '$login', '$email', '$password')";
            mysqli_query($link, $query);
            mysqli_close($link);
            $success = true;
            echo json_encode(array($success, $login));  //отправить ответ Ajax
            exit();
        } else {
           $success = false;
           echo json_encode(array($success, $login)); //отправить ответ Ajax
           exit();
        }
?>
  • Вопрос задан
  • 178 просмотров
Решения вопроса 1
fast-je
@fast-je
Пишу на php.
Mark Vin, ЧТо показывает во вкладке network при отправке ajax ?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега PHP
{PHP, MySql, HTML, JS, CSS} developer
1) Указывайте путь до скриптов от корня сайта (url:'/some.php',)
2) Вкладка нетворк - проверьте что уходит в скрипт и что возвращается
3) Проверьте что у вас открывается этот скрипт без аякса, сделайте там строку вывода и проверьте ее просто из браузера
4) В аякс обработчике у вас полная лажа, форма субмитится обычным методом, чихая на ваш скрипт, перепишите так:
$('form').on('submit', function(e){
   e.preventDefault();
   ...
})
5) Хранить пароли в открытом виде - ай-яй-яй, бака!

PS: Для кода есть редактор с подсветкой(</>), что за прикол постить картинки?
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы