@Dropsen
учусь веб-разработке.

Json_encode and JSON.parse() как решить синтаксическую ошибку?

Есть js код, который ловит нажатие кнопки и ajax отправляет в исполняющий файл. Исполняющий файл принимает данные, производит проверку на наличие данных из бд и отправляет запрос обратно.
Так вот, когда отправляю обратно json, то пишет ошибку. Как её решить не знаю. Нужна ваша помощь)
Собственно, сам код:
$(".enter").on("click", function() {
    event.preventDefault();
    var user = $('.user').val();
    var password = $('.password').val();


    $.ajax({
        url: '../registr/reg.php',
        type: 'POST',
        data: {
            'user': user,
            'password': password,
            'enter': true,
        },
        success: function(data) {
            let user = JSON.parse(data);
        },
    });
});


Вот код php:
if(isset($data['enter'])){
            $us = text_in($_POST['user']);
            $password = text_in(md5(md5(trim($_POST['password']))));
            $stn = $pdo->prepare("SELECT * FROM users WHERE user_login=:user");
            $stn-> execute(array(":user"=>$us));
            if (!empty($stn->fetch(PDO::FETCH_ASSOC)))
            {   
                $stn = $pdo->prepare("SELECT * FROM users WHERE user_password = :password");
                $stn-> execute(array(":password"=>$password));
                if (!empty($stn->fetch(PDO::FETCH_ASSOC))){
                    $usr = $pdo->prepare("SELECT user_id FROM users WHERE user_login=:user");
                    $nick = $pdo->prepare("SELECT user_login FROM users WHERE user_login=:user");
                    $nick ->execute(array(":user"=>$us));
                    $name = $nick->fetch(PDO::FETCH_ASSOC);
                    $names = array_values($name);
                    $nickname = implode($names);
                    $usr ->execute(array(":user"=>$us));
                    $usi = $usr->fetch(PDO::FETCH_ASSOC);
                    $usid = implode($usi);
                    $hash = md5(generateCode($usid));
                    setcookie('name', $nickname, time()+3600, "/", null, null, true);
                    setcookie('id', $hash, time()+3600, "/", null, null, true);
                    echo json_encode(["nickname" => $nickname]);
                }
            }
        }


Вот ошибка:
VM9753:1 Uncaught SyntaxError: Unexpected token < in JSON at position 0
at JSON.parse ()
at Object.success (VM9709 let.js:36)
at i (jquery.min.js:2)
at Object.fireWith [as resolveWith] (jquery.min.js:2)
at A (jquery.min.js:4)
at XMLHttpRequest. (jquery.min.js:4)

Я недавно начал изучать Веб-разработку, поэтому прошу не кидать тапками :)
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Откройте консоль браузера, вкладку "Сеть" и посмотрите, что именно возвращается с сервера в ответ на ваш запрос. Судя по ошибке, кроме/вместо JSON вы возвращаете HTML.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@abi7project
А почему сразу в запросе не указать тип запроса json? Зачем еще ответ парсить?
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы