【问题标题】:How to show ajax response into bootstrap modal如何在引导模式中显示 ajax 响应
【发布时间】:2018-04-27 00:48:43
【问题描述】:

我想弹出一个显示动态数据来自查询的模式。因此,当用户点击相关学校时,将显示为模态。我得到了回复,但我不知道如何显示该模态。请问有什么建议吗?

按钮:

 <a href="#." data-toggle="modal" data-target="#myModal" data-id="{{$user->id}}"  class="chooseSchoolBtn">Choose School</a>

阿贾克斯:

$(".chooseSchoolBtn").on("click", function (argument) {
    //console.log($(this).data("id"))
    var user_id = $(this).data("id")
    var info = $.get("{{url('school-list')}}", {
        id: user_id
    });
    info.done(function (data) {
        console.log(data)
    });
});

模态:

<div class="modal-body">
    // This section will come dynamically
    <div class="col-md-2 col-sm-4 col-xs-12">
        <div class="single_school">
            <div class="selection_area">
                <span class="glyphicon glyphicon-ok" aria-hidden="true"></span>
            </div>
            <div class="school_img_area" style="background-image: url(school/images/school/school1.jpg);">
            </div>
            <div class="school_info">
                <p class="school_name">School Name</p>
                <p class="school_description">Good School...</p>
                <p class="school_price">12$</p>
            </div>
        </div>
    </div>
    // dynamic section ends
</div>

json 响应:

{
    id: 1,
    user_id: 2,
    price: "2340.00",
    name: "XYZ",
    display_image: "1510570005ajaPXajmik.png"
}, {
    id: 3,
    user_id: 2,
    price: "123.00",
    name: "ABC",
    display_image: "1510570049QZWiQUh7zY.jpg"
}

【问题讨论】:

  • 用户点击相关学校的地方有没有根据json响应创建的按钮
  • @User57 检查我的答案。它会帮助你

标签: javascript php jquery ajax


【解决方案1】:
$(".chooseSchoolBtn").on("click", function (argument) {
      //console.log($(this).data("id"))
      var user_id = $(this).data("id")
      var info=$.get("{{url('school-list')}}",{id:user_id});
        info.done(function(data){          
              $('DIV WHERE YOU WNAT TO DISPLAY ID').html(data.id);
              // repeat same for user_id, price, so on;
      });
      });

【讨论】:

    【解决方案2】:

    如果您想使用JSON 响应来实现,那么您将遍历循环并将其附加到html。

    前 -

    var html="";
    for(var i=0; i<data.length; i++) {
        var html +=<p>data.price</p>data.name<p>;
    }
    $('.appendTo').html(html);
    

    其他选项在您的控制器方法中,而不是将数据作为 JSON 返回,您可以返回 HTML,而不是在 ajax 成功时替换内容。

    【讨论】:

      【解决方案3】:

      只需更改 ajax 响应数据

      info.done(function(data){          
          $.each(data,function(index,value){
              $(".school_img_area").attr("style","background-image: url(school/images/school/"+value.display_image+");");
              $(".school_name").html(value.name);
              $(".school_price").html(value.price);
          });
      });
      

      快乐编码:-)

      【讨论】:

      • 假设我有两个 json 响应,那时它只显示最后一个值并跳过第一个值
      • 你的意思是有多所学校。是吗??如果是这样的话,每个下面会有多个divs...
      • 你将如何添加&lt;div class="school_img_area" style="background-image: url("files/'+value.display_image+');" &gt;&lt;/div&gt; 表示背景图片你将如何提供网址?假设我的目录是localhost/userApp/public/files/456788.jpg
      • @User57 您将使用getcwd() 函数获取当前目录。例如:- getcwd() . "/files/" . image_name.jpg
      【解决方案4】:
      $(document).on("click", ".chooseSchoolBtn", function () {
              var schoolId= $(this).data('id');        
              $('#modalId').modal('show');
              $.ajax({
                  type: "POST",
                  url: "some_url_to_get_school_info",
                  data: {'sid':schoolId},
                  success: function(data){ 
                    $('#div_id_to_show').html(data);
                  },
                  error: function(){
                      alert("Fail")
                  }
              });
          });
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-25
        • 2014-08-08
        • 2017-10-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多