Добавить данные обратно в текстовое поле

Я пытаюсь заполнить <input /> из базы данных с помощью AJAX, но могу получить только тестирование данных в <textarea> или <span>.

Мой код AJAX

$('#part_number').on('change', function() {

    var part_number = $(this).val();

    $.ajax({
        url: '<?PHP echo admin_url('admin-ajax.php'); ?>',
        type: 'post',
        data: { action: 'description', part_number: part_number },
        success: function(data) {

            $('#description').val( data );

        }
    });

});

Мое поле ввода

<input id = "description" value = "" />

functions.php

add_action('wp_ajax_description' , 'description');  //ajax parameter action
add_action('wp_ajax_nopriv_description','description');
    function description(){
       $part_number = $_POST['part_number']; //id

       global $wpdb;
       $stock = $wpdb->get_results("SELECT * FROM _cif_inventory_table WHERE part_number = '$part_number'");
           foreach ( $stock as $item ) {
             echo $item->Description;
           }

      die();
}

Я не мог найти ничего здесь или гуглить

РЕДАКТИРОВАТЬ Это цикл, поэтому там 20 строк, но работает только первая, что я сделал не так?

<?PHP
            for ($i = 1; $i <= 20; $i++){
        ?>
            <div id = "lines" class = "row">
                <div class = "col-sm-1" style = "text-align:left;border:1px solid #808080"><span id = "row_number"><?PHP if ( $i < 10 ){ echo "0".$i;}else{echo $i;} ?></span></div>
                <div class = "col-sm-2" style = "text-align:left;border:1px solid #808080">
                    <select id = "part_number" style = "border:0px;">
                        <option value = "None Selected"></option>
                        <?PHP
                            $partNumbers = $wpdb->get_results("SELECT * FROM _cif_inventory_table;");
                                foreach ($partNumbers as $partNumber) {
                                    echo '<option value = "'.$partNumber->part_number.'">'.$partNumber->part_number.'</option>';
                                }
                        ?>
                    </select>
                </div>
                <div class = "col-sm-1" style = "text-align:left;border:1px solid #808080"><input size = "5" maxlength = "5" id = "quantity" value = "" /></div>
                <div class = "col-sm-6" style = "text-align:left;border:1px solid #808080"><input size = "75" id = "description" value = "" /></div>
                <div class = "col-sm-1" style = "text-align:left;border:1px solid #808080"><input id = "unitPrice" value = "" /></div>
                <div class = "col-sm-1" style = "text-align:left;border:1px solid #808080"><input id = "amount" value = "" /></div>
            </div><!-- end .row -->
        <?PHP
            }
        ?>

Рассматривали ли вы вместо этого использование конечной точки REST API? Обратите внимание, что в вашем коде есть атака с использованием SQL-инъекции, поскольку вы никогда не проверяете, что part_number на самом деле является числом, а не оператором SQL. Кроме того, что вы подразумеваете под "can only get the data testing in a textarea or a span?". Я полагаю, вы уже знаете, что html устанавливает внутренний HTML-код элементов, но элементы input не имеют внутреннего HTML-кода.

Tom J Nowell 26.07.2018 23:01

part_number на самом деле не число, это строка. Вы можете привести примеры REST Я не совсем понимаю, что вы имеете в виду

bckelley 26.07.2018 23:06

Вы используете .val() для input, а не .html() ... например. вот так $('#description').val( data );

Ason 26.07.2018 23:12

@LGSon Я тупой! Благодарю вас! на самом деле это была моя первая попытка использовать AJAX! Вы сделали мой день

bckelley 26.07.2018 23:15

@LGSon На самом деле, может быть, вы можете помочь с чем-то еще, у меня есть этот ввод в цикле for, и я могу получить только первую строку, чтобы действительно что-то сделать?

bckelley 26.07.2018 23:17

Я не знаю PHP. Добавьте тег в свой список тегов и обновите свой вопрос, чтобы сосредоточиться на этой части, теперь, когда задание решено.

Ason 26.07.2018 23:25

Избегайте добавления разных вопросов в сообщение, так как люди, как правило, не возвращаются к ним. Если вы создаете новый вопрос, убедитесь, что вы вставили свой PHP и обработанный код из инспектора элементов.

Victoria Ruiz 27.07.2018 00:09

@bckelley, можете ли вы заменить все в своем AJAX статическим HTML, чтобы он всегда возвращал одно и то же? Это должно исключить PHP из вашего вопроса

Tom J Nowell 27.07.2018 00:48

Технически @LGSon первым ответил на мой первоначальный вопрос, так что это принятый ответ!

bckelley 27.07.2018 18:18

@bckelley Приношу извинения за «прими ее ответ». Но еще раз: «этот ввод в цикле for, и я могу получить только первую строку, чтобы действительно что-либо сделать» - это потому, что вы используете один и тот же идентификатор для элементов во всех 20 строках, сгенерированных с помощью этого цикла.

Sally CJ 28.07.2018 02:30
Стоит ли изучать 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 и хотите разрабатывать...
0
10
51
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы хотите заполнить атрибут value ввода, поэтому вам нужно использовать .val():

$('#description').val( data );

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