Заполнить данные из базы данных с помощью php ajax val ()

в моем коде есть что-то странное. честно говоря, я получил это от кого-то, и я пытаюсь адаптировать его для своих нужд. Итак, проблема в том, что когда я нажимаю кнопку выборки, данные не отображаются. может ли кто-нибудь здесь сказать мне, что не так с кодом? Любой связанный ответ будет оценен. Заранее спасибо.

и вот мой код

<script type = "text/javascript">
$(document).ready(function() {
    function myrequest(e) {
        var name = $('.username').val();
        $.ajax({
            method: "GET",
            url: "http://localhost/spdb/debug/autofill.php", /* online, change this to your real url */
            data: {
                username: name
            },
	
            success: function( responseObject ) {
                alert('success');
                $('#posts').val(responseObject.level);
                $('#joindate').val(responseObject.last_login);
                
            },
            failure: function() {
                alert('fail');
            }
        });
    }
    
    $('#fetchFields').click(function(e) {
        e.preventDefault();
        myrequest();
    });
});
</script>
<html xml:lang = "en" xmlns = "http://www.w3.org/1999/xhtml">
    <head>
        <link href = "http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css" type = "text/css" rel = "stylesheet">
        <script src = "http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type = "text/javascript"></script>
        <script src = "http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js" type = "text/javascript"></script>
    </head>
    <body>
        <form method = "POST" action = "?act=proc">
            <fieldset>
                <legend>Form</legend>
                <label for = "username">Username: </label>
                <input type = "text" name = "username" id = "username"> 
                <button id = "fetchFields">fetch</button>
                <label for = "posts">Posts: </label>
                <input type = "text" size = "20" name = "posts" id = "posts">
                <label for = "joindate">Joindate: </label>
                <input type = "text" size = "20" name = "joindate" id = "joindate">
                <p><input type = "submit" value = "Submit" name = "submitBtn"></p>

            </fieldset>
        </form>
    </body>
</html>

и это код PHP:

$return = mysqli_query($konek, "SELECT * FROM tb_auth WHERE username ='admin' LIMIT 1");
$rows = mysqli_fetch_array($return);
$formattedData = json_encode($rows);
print $formattedData;`

вот результат PHP-кода:

{
    "0":"1",
    "id_auth":"1",
    "1":"TRC-US001",
    "auth_code":"TRC-US001",
    "2":"admin",
    "username":"admin",
    "3":"5f4dcc3b5aa765d61d8327deb882cf99",
    "password":"5f4dcc3b5aa765d61d8327deb882cf99",
    "4":"1",
    "level":"1",
    "5":"2018-07-05 13:55:19.200878",
    "last_login":"2018-07-05 13:55:19.200878",
    "6":"1",
    "status":"1"
}

это картина: результат

Правильный ли URL-адрес в ajax? Я просто спрашиваю из-за комментария, стоящего за этим.

Geshode 09.07.2018 10:11

да, это правильный URL

haldin foods 09.07.2018 10:13
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
64
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

В вашем html-коде есть вход с идентификатором username. В Javascript найдите эту строку кода var name = $('.username').val();. Измените . на #. Это должен быть var name = $('#username').val();.

.username предназначен для любого тега, имеющего класс username.

#username будет искать тег с идентификатором username.

все еще не работает, братан. По-прежнему не отображаются данные в <input id = "post"> и <input id = "joindate">. Мне кажется, что проблема в responseObject, но я не знаю, что не так с этой функцией.

haldin foods 09.07.2018 10:24

да, предупреждение появляется. но не вернуть значение. если вы измените это $ ('# posts'). val (responseObject.level); в $ ('# сообщений'). val ('мое значение'); , вы узнаете разные

haldin foods 09.07.2018 10:30

попробуйте открыть URL-адрес в вашем ajax в веб-браузере. Вы можете увидеть результат.

david 09.07.2018 10:38

его работа, я не знаю. но это возвращает данные json. в чем проблема? это проблема?

haldin foods 09.07.2018 10:43

Укажите этот результат на свой вопрос. Может, я смогу с этим помочь.

david 09.07.2018 10:44

Хм, странно. Я подумал, что код в порядке, увидев результат. Попробуйте изменить уровень и last_login на число. Нравится responseObject[4]

david 09.07.2018 10:58

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

haldin foods 09.07.2018 11:11

это решено братан. Спасибо за ваши усилия. я оценил это.

haldin foods 09.07.2018 11:18

попробуйте разобрать responseObject на json, используя

responseObject = JSON.parse (responseObject);

в вашей функции успеха

какую часть я должен изменить, братан?

haldin foods 09.07.2018 10:55

@haldinfoods в вашей функции успеха перед использованием responseObject

Jatin Parmar 09.07.2018 11:00

Привет, братан, после того, как я следую твоему ответу, результат будет отображаться как просто сообщение в моем вопросе. пожалуйста, взгляните

haldin foods 09.07.2018 11:10

это решено братан. Спасибо за ваши усилия. я оценил это.

haldin foods 09.07.2018 11:18

ваша проблема в том, что вы получаете данные в виде строкового / текстового формата и пытаетесь использовать их как объект сценария java, прежде чем использовать ответ в качестве объекта, вы должны проанализировать его на объект json, вот и все, вы можете указать, какая ошибка отображается в консоли браузера ?

Jatin Parmar 09.07.2018 11:20
Ответ принят как подходящий

Надеюсь, это поможет тебе

сначала нам нужно внести некоторые изменения в html и php код:

<!-- doctype is mandatory -->
<!DOCTYPE html>
<!-- language en -->
<html lang = "en">
    <head>
        <!-- title also is mandatory -->
        <title>tilte of your project</title>
        <link href = "http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/redmond/jquery-ui.css" type = "text/css" rel = "stylesheet" />
    </head>
    <body>
        <form method = "POST" action = "?act=proc">
            <fieldset>
                <legend>Form</legend>
                <label for = "username">Username: </label>
                <input type = "text" name = "username" id = "username"> 
                <button id = "fetchFields">fetch</button>
                <label for = "posts">Posts: </label>
                <input type = "text" size = "20" name = "posts" id = "posts">
                <label for = "joindate">Joindate: </label>
                <input type = "text" size = "20" name = "joindate" id = "joindate">
                <p><input type = "submit" value = "Submit" name = "submitBtn"></p>
            </fieldset>
        </form>
        <!-- put all your javascript before the end of the body -->
        <script src = "http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
        <script src = "http://ajax.googleapis.com/ajax/libs/jqueryui/1/jquery-ui.min.js"></script>
        <script>
            $(document).ready(function() {
                function myrequest(e) {
                    // use $('#username') to select by id instead of $('.username') used to select by class
                    var name = $('#username').val();
                    $.ajax({
                        method: "GET",
                        url: "http://localhost/spdb/debug/autofill.php", /* online, change this to your real url */
                        data: {
                            username: name
                        },
                        dataType: 'json', /* this is not mandatory */
                        success: function( responseObject ) {
                            console.info('success');
                            $('#posts').val(responseObject.level);
                            $('#joindate').val(responseObject.last_login);

                        },
                        failure: function() {
                            alert('fail');
                        }
                    });
                }

                $('#fetchFields').click(function(e) {
                    e.preventDefault();
                    myrequest();
                });
            });
        </script>
    </body>
</html>

php код:

// this line is very important, by using this line
// the browser can recognize that the data sent from
// the server as a json object.
header("Content-type: application/json");

$formattedData  = [];

if (isset($_GET['username'])) {
    $username       = trim($_GET['username']);
    // to be sure that the username is not empty
    if (empty($username)) {
        print json_encode($formattedData);
        exit;
    }
    $konek          = mysqli_connect($sql_db_host, $sql_db_user, $sql_db_pass, $sql_db_name, 3306);
    $return         = mysqli_query($konek, "SELECT * FROM tb_auth WHERE username = '" . $username . "' LIMIT 1");
    // use mysqli_fetch_assoc instead of mysqli_fetch_array
    // $rows           = mysqli_fetch_array($return);
    $rows           = mysqli_fetch_assoc($return);
    $formattedData  = json_encode($rows);
    // very important every connection created need to be closed
    mysqli_close($konek);
}
print $formattedData;

Боже мой, это 100% работа, чувак. ИИСУС. Большое спасибо @doset большое вам спасибо.

haldin foods 09.07.2018 11:17

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