【问题标题】:How to display dynamical content from a remote file in bootstrap modal using php?如何使用 php 在引导模式中显示来自远程文件的动态内容?
【发布时间】:2015-02-02 14:30:21
【问题描述】:

我有下表显示一些信息并调用远程模态框。

<table>
    <tr>
        <td>ID</td>
        <td>Name</td>
        <td>Family Name</td>
        <td>Country</td>
        <td>OK</td>
    </tr>
    <tr>
        <td>01</td>
        <td>John</td>
        <td>Lennon</td>
        <td>UK</td>
        <td>
            <a class="btn btn-info" data-target="#myModal" data-toggle="modal" href="remote.php">OK</a>
        </td>
    </tr>
    <tr>
        <td>02</td>
        <td>Joey</td>
        <td>Ramone</td>
        <td>US</td>
        <td>
            <a class="btn btn-info" data-target="#myModal" data-toggle="modal" href="remote.php">OK</a>
        </td>
    </tr>
    <tr>
        <td>03</td>
        <td>Joe</td>
        <td>Satriani</td>
        <td>US</td>
        <td>
            <a class="btn btn-info" data-target="#myModal" data-toggle="modal" href="remote.php">OK</a>
        </td>
    </tr>
</table>

这里是我的模态代码:

<!-- Modal -->

<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">

    <div class="modal-dialog">

        <div class="modal-content">

        </div> <!-- /.modal-content -->

    </div> <!-- /.modal-dialog -->

</div> 

<!-- /.Modal -->

我想知道如何将出现在任何行 (tr) 的单元格 (td) 内的信息发送到远程文件 (remote.php),在该远程文件 (remote.php) 中,php 脚本将使用此信息运行并给我们一个无需刷新页面即可在模式中显示的输出。

在此之前,我曾经通过 POST 使用表单发送信息: (我这里只显示带有表格的单元格。其余的都是一样的)。

    <tr>
        <td> ... </td>
        <td>
            <form id="form" action="remote.php" method="POST">
                <input name="id" type="hidden" value="01" />
                <input name="name" type="hidden" value="Jonh" />
                <input name="family" type="hidden" value="Lennon" />
                <input name="country" type="hidden" value="UK" />
                <input type="submit" value="OK">
            </form>
        </td>
    </tr>

脚本运行后,它被重定向回页面并显示模式。这是我想避免的。

到目前为止,我能够在模态中显示远程文件的内容。但它是静态内容。有谁知道如何使用这种模态结构将表的信息(变量)动态发送到远程文件?

非常感谢您的帮助!

【问题讨论】:

    标签: php jquery twitter-bootstrap


    【解决方案1】:

    由于remote 选项在版本 3.3.0 中已弃用,并将在版本 4 中删除,因此您必须管理自己远程内容。我建议如下:

    <tr>
        <td>03</td>
        <td>Joe</td>
        <td>Satriani</td>
        <td>US</td>
        <td>
            <a class="btn btn-info" data-modal="#myModal" data-href="remote.php">OK</a>
        </td>
    </tr>
    

    然后你会使用下面的代码:

    $(function() {
        $('tr > td > a.btn-info').on('click', function() {
            var data = $(this).closest('tr').find('>td:lt(4)'),
                modal = $(this).data('modal');
            $.post( $(this).data('href'), {
                        id: data.eq(0).text(),
                        name: data.eq(1).text(),
                        family_name: data.eq(2).text(),
                        country: data.eq(3).text()
                     }, function( data ) {
                    //some processing ... if required
                    $(modal).modal('show');
             });
        });
    });
    

    DEMO

    【讨论】:

    • 您好@PeterKA,感谢您的完整回答。不幸的是屏幕有点暗,但没有出现模式。例如,您指的是哪种处理(如果需要)。顺便说一句,我想如何接收 php 中的变量?我正在尝试这样: $name = $_POST['name'];
    • 模态中没有要显示的内容,所以什么也没有出现。只是为了演示,我已经注释掉了 ajax 调用并调用了 modal open。请根据包含的演示更新您的模态标记。在演示中,我包含了一些示例处理,一旦 ajax 响应返回,您就可以执行此操作。而且,确定这是在 PHP 中接收数据的正确方式。
    • 嗨@PeterKA,哇,它工作得很好!如果想在 td 中发送隐藏输入的值怎么办?下面的代码对吗? var data = $(this).closest('tr').find('>td>:lt(4)'), 如果我有隐藏的值没有出现在表格中怎么办就像我上面描述的旧方式一样?如何使用 jquery 管理它?我们不能忘记发送的数据将在脚本中使用,并在我们的示例中返回一些与艺术家姓名相关的新信息。
    • 太棒了!如果要发送到服务器的数据位于相同td 元素内的隐藏表单字段中,您只需将data.eq(n).text() 替换为data.eq(n).find('input[type=hidden]').val()——就是这样! :)
    • 现在我明白了。谢谢!但我没有得到的是如何在我的脚本中使用 val 。很简单,假设我在remote.php 中的脚本接收到id 的值并将其乘以2。换句话说,我不希望模态中有id,而是这个乘法的结果。抱歉我的无知,但是当您说 id: data.eq(1).text() 时,这意味着 id 将通过邮寄方式发送到等于 remote.php 的 data('href') ,不是吗?那我该怎么用呢?如果我这样写: if (isset($_POST) && !empty($_POST)){ echo '
      '; print_r($_POST);回声'
      '; } 什么也没发生。
    【解决方案2】:

    提供&lt;td&gt;s 类,以便更容易选择:

    <tr>
        <td class="id">01</td>
        <td class="name">John</td>
        <td class="family">Lennon</td>
        <td class="country">UK</td>
        <td>
            <a class="btn btn-info" data-target="#myModal" data-toggle="modal" href="remote.php">OK</a>
        </td>
    </tr>
    

    那么btn-info 的点击事件处理程序将是:

    function showModal(e) {
      e.preventDefault();
      var fields = ["id", "name", "family", "country" ];
      var post = {};
      for(var i = 0; i < fields.length; i++) {
        post[fields[i] = $(this).closest('tr').find('td.' + fields[i]).text();
      }
      $.post("remote.php", post, function(html) {
         // display modal, set html here
      });
    }
    

    【讨论】:

    • 你好@Marek!谢谢您的回答。我如何接收 php 中的变量?例如,我正在尝试使用 $name = $_POST['name'],但我收到以下错误消息:“注意:未定义的索引:C:\xampp\htdocs\remote.php 中的名称在第 16 行”。我看到模态体中的所有内容,但变量。有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 2016-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-22
    • 2012-08-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多