Не может получить текст типа ввода через js

Я купил курс в Udemy, чтобы создать систему входа, и просто хотел добавить больше ввода в html, чтобы получить имя пользователя ..... но это не сработало это заняло у меня около 15 часов, и я до сих пор не могу понять, почему это не работает

<div class = "uk-section uk-container">
    <div class = "uk-grid uk-child-width-1-3@s uk-child-width-1-1" uk-grid>
        <form class = "uk-form-stacked js-register">

            <h2>Register</h2>


            <div class = "uk-margin">
                <label class = "uk-form-label" for = "form-stacked-text">Username</label>
                <div class = "uk-form-controls">
                    <input class = "uk-input" id = "form-stacked-text" type = "text" required='required' placeholder = "Username">
                </div>
            </div>






            <div class = "uk-margin">
                <label class = "uk-form-label" for = "form-stacked-text">Email</label>
                <div class = "uk-form-controls">
                    <input class = "uk-input" id = "form-stacked-text" type = "email" required='required' placeholder = "[email protected]">
                </div>
            </div>

            <div class = "uk-margin">
                <label class = "uk-form-label" for = "form-stacked-text">Passphrase</label>
                <div class = "uk-form-controls">
                    <input class = "uk-input" id = "form-stacked-text" type = "password" required='required' placeholder = "Your passphrase">
                </div>
            </div>

            <div class = "uk-margin uk-alert uk-alert-danger js-error" style='display: none;'></div>

            <div class = "uk-margin">
                <button class = "uk-button uk-button-default" type = "submit">Register</button>
            </div>

        </form>
    </div>

код jquery:

$(document).on("submit", "form.js-register", function(event) {
event.preventDefault();

var _form = $(this);
var _error = $(".js-error", _form);

var dataObj = {
    username: $("input[type='text']", _form).val(),
    email: $("input[type='email']", _form).val(),
    password: $("input[type='password']", _form).val()
};

if (dataObj.email.length < 6) {
    _error
        .text("Please enter a valid email address")
        .show();
    return false;
} else if (dataObj.password.length < 11) {
    _error
        .text("Please enter a passphrase that is at least 11 characters long.")
        .show();
    return false;
}

// Assuming the code gets this far, we can start the ajax process
_error.hide();

$.ajax({
    type: 'POST',
    url: '/ajax/register.php',
    data: dataObj,
    dataType: 'json',
    async: true,
})
.done(function ajaxDone(data) {
    // Whatever data is 
    if (data.redirect !== undefined) {
        window.location = data.redirect;
    } else if (data.error !== undefined) {
        _error
            .text(data.error)
            .show();
    }
})
.fail(function ajaxFailed(e) {
    // This failed 
})
.always(function ajaxAlwaysDoThis(data) {
    // Always do
    console.info('Always');
})

return false;
})

php код:

define('__CONFIG__', true);

// Require the config
require_once "../inc/config.php"; 

if ($_SERVER['REQUEST_METHOD'] == 'POST' or 1==1) {
    // Always return JSON format
    // header('Content-Type: application/json');

    $return = [];

    $email = Filter::String( $_POST['email'] );

    // Make sure the user does not exist. 
    $findUser = $con->prepare("SELECT user_id FROM users WHERE email = LOWER(:email) LIMIT 1");
    $findUser->bindParam(':email', $email, PDO::PARAM_STR);
    $findUser->execute();

    if ($findUser->rowCount() == 1) {
        // User exists 
        // We can also check to see if they are able to log in. 
        $return['error'] = "You already have an account";
        $return['is_logged_in'] = false;
    } else {
        // User does not exist, add them now. 

        $password = password_hash($_POST['password'], PASSWORD_DEFAULT);
        $username = $_POST['text'] ;
        $addUser = $con->prepare("INSERT INTO users(username,email, password) VALUES(:username,LOWER(:email), :password)");
        $addUser->bindParam(':username', $username, PDO::PARAM_STR);
        $addUser->bindParam(':email', $email, PDO::PARAM_STR);
        $addUser->bindParam(':password', $password, PDO::PARAM_STR);
        $addUser->execute();

        $user_id = $con->lastInsertId();

        $_SESSION['user_id'] = (int) $user_id;

        $return['redirect'] = '/dashboard.php?message=welcome';
        $return['is_logged_in'] = true;
    }

    echo json_encode($return, JSON_PRETTY_PRINT); exit;
} else {
    // Die. Kill the script. Redirect the user. Do something regardless.
    exit('Invalid URL');
}

что случилось, что электронная почта и пароль отправлены в базу данных (которую я получил из исходного кода курса) и имя пользователя, которое я добавил, просто ничего не делаю .. запретить перенаправление страницы Я действительно думаю, что совершил идиотскую ошибку, но я думаю, что 15 часов для попыток тоже достаточно ... простите меня за это ... и за мой плохой английский Спасибо

Вы отправляете имя пользователя с ключом username, а не text. Просто измените $ username = $ _POST ['text']; к $ username = $ _POST ['имя пользователя']; Он будет работать, если нет других проблем (или вы можете изменить var dataObj = {username: на text: в jquery)

Uğur Eren 25.10.2018 06:15

@TrueTiem все та же проблема

Blank 25.10.2018 06:18

можешь добавить журнал ошибок?

Uğur Eren 25.10.2018 06:18

@TrueTiem добавил .error () в ajax в jquery, ничего не произошло .. добавил try and catch в php после оператора else .. ничего не отправляется в базу данных, ни эхо-ошибка ... также нет ошибок в консоли .. я думаю, что не мог сделать журнал ошибок может быть ... извините за этого новичка iam

Blank 25.10.2018 06:31

Умм, вы можете попробовать echo $ username и if ($ addUser-> execute ()) {echo "working";} else {$ addUser-> errorInfo ();} Я думаю, это ошибка, связанная с php. И, возможно, ошибка базы данных или pdo.

Uğur Eren 25.10.2018 06:42

@TrueTiem не отозвался ... он и сейчас не отправляет электронную почту и пароль! >>> Кстати, я также не могу повторить dataObj.username в jquery !! может у меня была еще одна идиотская ошибка, чем эта >>

Blank 25.10.2018 06:45
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
6
116
1

Ответы 1

отредактируйте это в html

<div class = "uk-form-controls">
    <input class = "uk-input" name = "username" type = "text" required='required' placeholder = "Username">
</div>

и отредактируйте dataobj в ajax

var dataObj = {
    username: $("input[name='username']", _form).val(),
    email: $("input[type='email']", _form).val(),
    password: $("input[type='password']", _form).val()
};

и удалите все идентификаторы из html, потому что вы определили один и тот же идентификатор для каждого тега html (имя пользователя, адрес электронной почты, вводное слово), javascript выдаст ошибку, если более одного тега html имеют одинаковый идентификатор

Есть только один ввод с типом текста. Проблем нет.

Uğur Eren 25.10.2018 06:45

да, я знаю, просто удалите все идентификаторы или определите другой идентификатор текстового поля, иначе javascript не будет работать должным образом, вы можете увидеть ошибку в консоли

khan Farman 25.10.2018 06:47

попробуйте это после dataobj "console.info (dataobj.username)" и посмотрите, получаете ли вы имя пользователя в консоли или нет

khan Farman 25.10.2018 06:49

вы спрашиваете или говорите мне, что jquery успешно консолей имя пользователя в консоли? пожалуйста, ответьте, какие данные вы получаете в консоли

khan Farman 25.10.2018 06:54

Я пытался ввести имя пользователя console.info ... или вставить его в if () и другие ... буквально ничего! все то же ..

Blank 25.10.2018 06:59

console.info (имя пользователя) ничего не покажет, консоль как это console.info (dataobj.username)

khan Farman 25.10.2018 07:00

@khanFarman codepen.io/truetiem/pen/OBaqVP как видите, в jquery или html части все нормально

Uğur Eren 25.10.2018 07:02

да, конечно, я сделал это .. ничего не произошло ... кстати, даже если я console.info (dataObj.email) ... тоже ничего не произошло

Blank 25.10.2018 07:03

прислать вам все файлы проекта, чтобы вам было лучше видно?

Blank 25.10.2018 07:05

спасибо за предоставление всех кодов, я изучил ваш код, и ajax работает нормально и отправляет все данные, вы редактировали эту строку в php $ username = $ _POST ['text']; к $ username = $ _POST ['имя пользователя']; ??

khan Farman 25.10.2018 07:11

да, я сделал .... вот почему я хочу отправить весь проект !! я попытался просто упростить и взять каждый блок кода и попробовать в одиночку .. это сработало .. !!! Я даже начал думать о проблемах с apache, поэтому переустанавливал его 2 раза !!

Blank 25.10.2018 07:18

я буквально пробовал больше 15 часов !! так я думаю, что это расширенная ошибка или ошибка супер-идиота ...

Blank 25.10.2018 07:25

@Blank, вероятно, ошибка базы данных, вы должны регистрировать ошибки PDO

Uğur Eren 25.10.2018 14:56

@TrueTiem, я так не думаю ... просто изменив базу данных значений имени пользователя, получи это ...

Blank 25.10.2018 20:00

Другие вопросы по теме