【问题标题】:Dynamic Modal without refreshing page via Ajax无需通过 Ajax 刷新页面的动态模态
【发布时间】:2016-01-12 16:35:05
【问题描述】:

我正在尝试使用基于表单输入的动态数据填充模式,而无需重新加载页面。

一步一步:

1) 用户将在 admin.php 上输入名称并提交表单

2) 数据通过 Ajax 提交(理想情况下)并通过 editUser.php 处理

3) 从 mysqli 数据库中提取数据并放入模态内容

4) 模态已加载(同时仍在查看 admin.php 页面),没有重新加载页面,但在模态中具有动态内容。

到目前为止我的代码: 表单+Ajax:

<script src="http://malsup.github.com/jquery.form.js"></script> 
            <script> 
                // wait for the DOM to be loaded 
                $(document).ready(function() { 
                    // bind 'myForm' and provide a simple callback function 
                    $('#myForm').ajaxForm(function() { 
                        alert("Thank you for your comment!"); 
                    }); 
                }); 
            </script>
            <form id="myForm" action="query/editUser.php" method="post"> 
                Name: <input type="text" name="name" /> 
                <input type="submit" value="Submit Comment" /> 
            </form>

editUser.php:

<script>
    $(window).load(function(){
        $('#myModal').modal('show');
    });
</script>

    <!-- Modal -->
    <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
      <div class="modal-dialog" role="document">
        <div class="modal-content">
          <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
            <h4 class="modal-title" id="myModalLabel">Modal title</h4>
          </div>
          <div class="modal-body">
            --List data based on the form input from before
          </div>
          <div class="modal-footer">
            <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
            <button type="button" class="btn btn-primary">Save changes</button>
          </div>
        </div>
      </div>
    </div>

我目前的问题是提交表单后不知道如何显示模态。 你会注意到我目前没有调用我的数据库,也没有在模态框上填充任何内容,因为这将在以后出现。我现在的目标是在提交表单后显示模态(并且这样做的方式仍然可以在显示之前填充模态)。

我被卡住了,一直在尝试解决这个问题,非常感谢帮助。

编辑:

这里是我拥有的和我想要的的细分。

现在,我有 2 页:admin.phpeditUser.php

管理页面包含表单,提交时使用“操作”发布到 editUser 页面,该页面包含我的模态代码。

当表单发布时,我希望使用 while 语句从数据库中提取信息来动态填充信息(基于管理页面的输入)。

然后我希望模式在管理页面上显示为叠加层 - 这一切都应该在绝对不刷新页面的情况下发生。

我知道如何用信息动态填充模态,我知道如何调用模态,但我不知道如何在我的管理页面上显示模态,在提交表单然后填充保存的模态之后userEdit 页面动态。

【问题讨论】:

    标签: javascript php html ajax twitter-bootstrap


    【解决方案1】:

    如果dialog 是要接收内容的&lt;div class="modal"&gt; 的ID,

    $('#dialog').modal('show');
    

    例如:

    $.get(url).then(function(data) {
        // fill "#dialog .modal-body" with content based on 'data'
        ...
    
        $('#dialog').modal('show');
    });
    

    【讨论】:

    • 对不起,我没有关注。一般来说,我对 jquery、ajax 和 javascript 非常陌生。我可以用while语句填充内容,我只需要一种在表单提交后从editUser.php页面激活模式的方法。模态当前存储在 ajax url 输出页面上,然后我可以使用它来填充模态的内容,但麻烦的是显示模态。
    • modals 不是由 PHP 代码激活的,它们是由提交表单并检索结果的客户端 jQuery 代码触发的
    • 我从来没有说过通过 php 激活模态。我知道它们是如何被激活的,我的代码中的模式已经起作用了。它只是不能按照我想要的方式工作。现在,它只有在我实际打开editUser.php 页面时才有效。我希望通过admin.php 页面提交表单时弹出模式。
    • 对,所以您使用的是第三方 ajaxForm 插件 - 之前没有发现。您需要安排您在ajaxForm 注册的回调以从 php 中检索 HTML 输出如果可以 - 从文档中不清楚,然后将其添加到 DOM,然后 然后致电.modal('show')
    • 我现在无法处理这个问题,但是您需要查看ajaxForm 回调接收的参数,看看其中是否有任何HTML输出。
    猜你喜欢
    • 2020-05-08
    • 1970-01-01
    • 2017-10-06
    • 1970-01-01
    • 1970-01-01
    • 2017-09-01
    • 2016-10-22
    • 2012-03-04
    • 2016-03-12
    相关资源
    最近更新 更多