弹出内容取决于AJAX结果

时间:2018-06-25 13:22:22

标签: javascript php html ajax post

我在网络开发方面经验不足,因此对菜鸟的错误感到抱歉;)

在HTML中,我想创建一个动态弹出窗口(被CSS隐藏的div)。单击按钮后,我正在执行AJAX发布请求。请求的结果是一个字符串,该字符串存储在HTML页面上的隐藏输入字段中。

弹出窗口包含一个表,其中包含由字符串提交的内容。 但是现在我想通过PHP $ _GET或$ _POST请求检索字符串。

此刻此刻不起作用,我不明白为什么。 打开弹出窗口,我得到以下错误:

  

注意:未定义的索引:...中隐藏了popupcontent

     

警告:

中为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();
            }
        });

我知道第二个错误正在发生,因为$ rows为空。 但是,如何解决此问题并从输入字段中检索字符串?我可以确认该字符串已正确存储在输入字段中,以便所有AJAX东西都能正常工作。

非常感谢您!

1 个答案:

答案 0 :(得分:0)

一种解决方案:

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>
        ';
    }
    ...