将参数发送到引导模式窗口?

Posted

技术标签:

【中文标题】将参数发送到引导模式窗口?【英文标题】:Send parameter to Bootstrap modal window? 【发布时间】:2014-08-11 00:17:52 【问题描述】:

我有一个问题,我无法将任何参数传递给模式窗口(使用 Bootstrap 3),我尝试使用此链接中所述的解决方案,但无法使其工作:

Dynamically load information to Twitter Bootstrap modal

(解决方案kexxcream用户)。

但是按下按钮,显示屏什么也没有显示,显然是块,下面附上一张图片:

http://i.imgur.com/uzRUyf1.png

我已附上代码(左上方相同的代码帖子);

html 代码:

      <div id="myModal" class="modal hide fade">
      <div class="modal-header">
        <button class="close" data-dismiss="modal">&times;</button>
        <h3>Title</h3>
      </div>
      <div class="modal-body">            
          <div id="modalContent" style="display:none;">

          </div>
      </div>
      <div class="modal-footer">
        <a href="#" class="btn btn-info" data-dismiss="modal" >Close</a>
      </div>
  </div> 

JS代码:

    $("a[data-toggle=modal]").click(function() 
       
        var essay_id = $(this).attr('id');

        $.ajax(
            cache: false,
            type: 'POST',
            url: 'backend.php',
            data: 'EID='+essay_id,
            success: function(data) 
            
                $('#myModal').show();
                $('#modalContent').show().html(data);
            
        );
    );

按钮:

<a href='#myModal' data-toggle='modal' id='2'> Edit </a>

PHP 代码(backend.php):

<?php
$editId = $_POST['EID'];
?>
  <div class="jumbotron">
   <div class="container">
    <h1>The ID Selected is <?php echo $editId ?></h1>
   </div>
  </div>

【问题讨论】:

$editId = filter_var($_POST["id"], FILTER_SANITIZE_NUMBER_INT); // 只是玩安全:) 【参考方案1】:

有一个比公认答案更好的解决方案,特别是使用 data-* 属性。如果页面上的任何其他元素的 id=1,将 id 设置为 1 会导致问题。相反,您可以这样做:

<button class="btn btn-primary" data-toggle="modal" data-target="#yourModalID" data-yourparameter="whateverYouWant">Load</button>

<script>
$('#yourModalID').on('show.bs.modal', function(e) 
  var yourparameter = e.relatedTarget.dataset.yourparameter;
  // Do some stuff w/ it.
);
</script>

【讨论】:

即使我在标记中使用了data-yourParameter,我也必须使用e.relatedTarget.dataset.yourparameter(小写)。不知道为什么。 嗯,很高兴知道。我想我以前从未真正使用过 data-* 属性。谢谢! 更好的答案。需要在顶部 我在 Yii2 应用程序中使用上述解决方案,它不起作用。 :( 谢谢,它工作正常,使用你的参数(小写)【参考方案2】:

我找到了这个更好的方法,不需要删除数据,每次调用远程内容的来源即可

$(document).ready(function() 
    $('.class').click(function() 
        var id = this.id;
        //alert(id);checking that have correct id
        $("#iframe").attr("src","url?id=" + id);
        $('#Modal').modal( 
            show: true 
        );
    );
);

【讨论】:

【参考方案3】:

我在以下位置找到了解决方案: Passing data to a bootstrap modal

所以简单地使用:

 $(e.relatedTarget).data('book-id'); 

with 'book-id' 是带有前缀'data-'的模态属性

【讨论】:

【参考方案4】:

首先你应该修复模态 HTML structure。现在不正确了,你不需要.hide类:

<div id="edit-modal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
                <h4 class="modal-title" id="myModalLabel">Modal title</h4>
            </div>
            <div class="modal-body edit-content">
                ...
            </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>

那么链接应该通过data-target属性指向这个模态:

<a href="#myModal" data-toggle="modal" id="1" data-target="#edit-modal">Edit 1</a>

终于Js部分变得很简单了:

    $('#edit-modal').on('show.bs.modal', function(e) 

        var $modal = $(this),
            esseyId = e.relatedTarget.id;

        $.ajax(
            cache: false,
            type: 'POST',
            url: 'backend.php',
            data: 'EID=' + essayId,
            success: function(data) 
                $modal.find('.edit-content').html(data);
            
        );
    )

演示:http://plnkr.co/edit/4XnLTZ557qMegqRmWVwU?p=preview

【讨论】:

朋友非常感谢您的帮助。他在网上搜索了很多天,我无法解决问题,但是您立即解决了我的问题。我真的很感激,我工作没有问题。再次非常感谢您。来自智利的问候。 很高兴能帮上忙! @dfsq 如果你有空闲时间我会感谢你如果你能看看这个赏金问题:***.com/questions/47609994/…

以上是关于将参数发送到引导模式窗口?的主要内容,如果未能解决你的问题,请参考以下文章

无法将参数发送到 MySQL 存储过程窗口窗体

将路由参数作为参数发送到中间件 Laravel

如何将复杂的参数发送到 asp.net

PyQt在连接到信号时将参数发送到插槽

将正确的 JSON 作为参数发送到 RPC

将二进制数据作为参数发送到 Web 服务中的方法?