在bootstrap模式中显示ajax调用结果

时间:2014-06-18 15:31:24

标签: javascript jquery ajax twitter-bootstrap bootstrap-modal

我需要在Bootstrap模式中显示多个数据。为此,我所做的就是:

js file:

$('#seeProfile').on('show', function() {

  $('.see-user').on('click', function(e) {
  e.preventDefault();

  var id = $(this).data('id');

  $.ajax({
     url:  'getUser',
     type: 'POST',
     data: {id: id},
     success: function(html){
       $('#seeProfile .modal-body .p').html('test');
     },
     error: function(){
       alert("error");
     }  
  });  
});
});      

view snippet(modal):

<div id="seeProfile" class="modal hide fade" tabindex="-1" data-replace="true">
<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
    <h3>Perfil de Usuario</h3>
</div>

<div class="modal-body">
    <p></p>
</div>
<div class="modal-footer">
    <button type="button" data-dismiss="modal" class="btn">Close</button>
</div>

这不起作用。模态没有显示,但在检查时没有出现错误。我做错了什么?

修改

鉴于答案,我意识到我错过了一个点,所以成功函数应该是:

$('#seeProfile .modal-body p').html("test");

现在该模式正在运行我需要知道如何将数据“插入”这个新的模态组织:

<div id="seeProfile" class="modal hide fade" tabindex="-1" data-replace="true">
<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
    <h3>Perfil de Usuario</h3>
</div>
<div class="modal-body">
    <div class="scroller" style="height:300px" data-always-visible="1" data-rail-visible="1">
        <div class="row-fluid">
            <div class="span6">
                <h5>Usuario</h5>
                <p><input type="text" class="span12 m-wrap" id="username" readonly></p>
                <h5>Nombre</h5>
                <p><input type="text" id="name" class="span12 m-wrap" value="" readonly></p>
            </div>
            <div class="span6">
                <h5>Email</h5>
                <p><input type="text" class="span12 m-wrap" readonly></p>
            </div>
        </div>
    </div>
</div>
<div class="modal-footer">
    <button type="button" data-dismiss="modal" class="btn">Close</button>
</div>

你可以看到有很多“&lt; p&gt;”模态体内的标签。我试过插入一个id,所以它可以是不同的,但它对我不起作用。我怎么能这样做?

5 个答案:

答案 0 :(得分:5)

当你显示模态时你绑定了click事件,你从不显示模态,所以点击处理程序永远不会被绑定。

您可以这样做:

$('.see-user').on('click', function(e) {
    e.preventDefault();
    var id = $(this).data('id');
    $.ajax({
        url:  'getUser',
        type: 'POST',
        data: {id: id},
        success: function(html){
            $('#seeProfile .modal-body p').html('test');
            $('#seeProfile').modal('show');
        },
        error: function(){
            alert("error");
        }  
    });  
});

如果您想在显示模式时添加单击处理程序,则需要使用适当的处理程序。 You can find them here(在活动下方)。

答案 1 :(得分:1)

你应该替换

 $('#seeProfile .modal-body .p').html('test');

通过

 $('#seeProfile .modal-body p').html('test');

因为如果您之前插入一个点,您正在寻找一个名为'p'的类。对于html代码<p></p>,您只需撰写&#39; p&#39;在选择器中。

完成&#34; $('#seeProfile').modal('show');&#34;显示模态。

答案 2 :(得分:0)

试试这个(为我工作):

这将显示模态:

        $('Your button').on('click',function(e){
            e.preventDefault();
            $('your modal').modal('show');
        });

然后这将绑定模态show事件:

(您可以使用show.bs.modal或shown.bs.modal  唯一的区别是事件发布的时间)

      $('your modal').on('show.bs.modal', function(e) {
          e.preventDefault();
          //ajax call here!!
      });

答案 3 :(得分:0)

试试这个:

$('#seeProfile .modal-body p').html('test');

请注意,我删除了。 (点)你在p之前。

答案 4 :(得分:0)

尝试使用班级名称。

$(document).on("click", ".getAndUploadButClass", function() {
    alert("Before laoding the image making ajax call to load the images ");
    $('#picturemyModal').modal('show');
});