Содержание всплывающего окна зависит от результата AJAX - PullRequest
0 голосов
/ 25 июня 2018

Я не настолько опытен в веб-разработке, поэтому извините за ошибки новичков;)

В HTML я хочу создать динамическое всплывающее окно (div, скрытое с помощью CSS).По нажатию кнопки я выполняю пост-запрос AJAX.Результатом запроса является строка, которая хранится в скрытом поле ввода на странице HTML.

Всплывающее окно содержит таблицу с содержимым, представленным строкой.Однако теперь я хочу получить строку с помощью запроса PHP $ _GET или $ _POST.

В данный момент это не работает, и я не понимаю, почему.Открывая всплывающее окно, я получаю следующие ошибки:

Примечание: неопределенный индекс: popupcontenthidden in ...

Предупреждение: неверный аргумент для foreach () в

HTML:

<div class="popupcontent">
                <span class="helper"></span>
                <div>
                    <div class="popupclose">X</div>
                    <h3>UPDATE DATABASE ENTRY</h3>
                    <h4>Enter values:</h4>
                    <table id="popupresult">
                        <form name='form' action="" method='post'>
                            <input type='text' name='popupcontenthidden' id='popupcontenthidden'>
                        </form>
                        <tr>
                            <th>Field</th>
                            <th>Type</th>
                            <th>Null</th>
                            <th>Key</th>
                            <th>Default</th>
                            <th>Extra</th>
                            <th>Value</th>
                        </tr>
                        <?php
                            $rows = json_decode($_POST['popupcontenthidden']);
                            foreach ( $rows as $print ) {
                            ?>
                        <tr>
                            <td><?php echo $print->Field; ?></td>
                            <td><?php echo $print->Type; ?></td>
                            <td><?php echo $print->Null; ?></td>
                            <td><?php echo $print->Key; ?></td>
                            <td><?php echo $print->Default; ?></td>
                            <td><?php echo $print->Extra; ?></td>
                        </tr>
                        <?php  } ?>
                    </table>
                </div>

JS:

$.ajax({
            type:'POST',
            url: '../wp-content/plugins/ars-management/admin/ars-management-admin-ajax.php',
            data: {function: "update", entries: entries},
            success: function(response) {

                var rows = response;

                //hand data to html hidden input
                document.getElementById("popupcontenthidden").value = rows;

                //open popup on click
                $(".popupcontent").show();
            }
        });

Я понимаю, что вторая ошибка происходит, потому что $ряды пустые.Но как я могу решить проблему и получить строку из поля ввода?Я могу подтвердить, что строка правильно сохранена в поле ввода, поэтому все элементы AJAX работают.

Большое вам спасибо!

1 Ответ

0 голосов
/ 25 июня 2018

Тип решения здесь:

HTML:

<div class="popupcontent">
   <span class="helper"></span>
   <div class="popupclose">X</div>
   <h3>UPDATE DATABASE ENTRY</h3>
   <h4>Enter values:</h4>
   <table id="popupresult">
       <thead>
           <tr>
                <th>Field</th>
                <th>Type</th>
                <th>Null</th>
                <th>Key</th>
                <th>Default</th>
                <th>Extra</th>
                <th>Value</th>
            </tr>
        </thead>
        <tbody id="myPopupContentTableBody"></tbody>
    </table>
</div>

Javascript:

$.ajax({
    type:'POST',
    url: '../wp-content/plugins/ars-management/admin/ars-management-admin-ajax.php',
    data: {function: "update", entries: entries},
    success: function(response) {
        $('#myPopupContentTableBody').html(response);

        //open popup on click
        $(".popupcontent").show();
    }
});

PHP:

<?php
    ...
    $rows = myPHPCalculation;
    foreach ($rows as $print){
        echo '
            <tr>
                <td>'.$print['Field'].'</td>
                <td>'.$print['Type'].'</td>
                <td>'.$print['Null'].'</td>
                <td>'.$print['Key'].'</td>
                <td>'.$print['Default'].'</td>
                <td>'.$print['Extra'].'</td>
            </tr>
        ';
    }
    ...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...