【问题标题】:Boostrap modal update with ajax使用 ajax 进行引导模式更新
【发布时间】:2016-08-29 17:49:45
【问题描述】:

我有一个页面,其中生成具有数据 ID 的按钮。当我单击按钮时,通过 ajax 将数据 ID 发送到我的 php 代码,打开模式窗口并生成带有接收 ID 的内容。但问题是我需要先刷新页面才能在 $_POST 变量中获取一些值,并且在我打开和关闭我的模式后,我需要再次刷新页面以便我的变量更新并且不会打开同一个窗口。

$(document).ready(function(){
  // Otevre modal
  $('.show-modal').click(function(){
    var product_id = $(this).attr('data-id');
    $.ajax({
      type: 'POST',
      cache: false,
      data: {modalID : product_id},
      url: 'includes/getID.php', // tomuto souboru predas idecko produktu, zapises do kosiku atd.
      success: function(data) {
        $("#itemBox").modal('show');
        // treba nejaka hlaska, ze byl pridan do kosiku
      }
    });

    // kod co otevre modal, mkrni na bootstrap manual jak je otevira nebo si otevreni nadefinuj sa
    //$('.product_id').val(productID);
  });
});

这里是 JS 代码,

<?php
if(!isset($_SESSION)){
    session_start();
}


if(isset($_REQUEST['modalID'])){

    $_SESSION['modalBoxID'] = $_REQUEST['modalID'];
}
?>

这是我如何从 ajax 保存请求的 ID。

这是我生成模态框的方式,问题是如果不刷新页面,我打开的每个框都有相同的内容。

<?php 
if(!isset($_SESSION)){
session_start();
}


if(!isset($_SESSION['sessName'])){
$_SESSION['sessName'] = 'visitor';
}

if(!empty($_SESSION['modalBoxID'])){
$sql = "SELECT * FROM vehicle WHERE     vehicle.id='{$_SESSION['modalBoxID']}'";
$sqlquery = $db->query($sql);
$_SESSION['modalBoxID'] = NULL;
}
?>


<div class="container">

  <!-- Modal -->
  <div class="modal fade" id="itemBox" role="dialog">
    <div class="modal-dialog modal-lg">


      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
        </div>
        <div class="modal-body display-content">
          <div class="container-fluid">
            <?php while($details = mysqli_fetch_assoc($sqlquery)) : ?>


            <div class="col-md-4"><img src=<?php echo $details['image'];?> class="image-responsive">

              <div class="col-sm-6">
                <form action="add_cart.php" method="post">
                  <div class="form-group">
                    <label for="quantity">Quantity:</label>
                    <input type="text" class="form-control" id="quantity" name="quantity">
                  </div>
                </form>
              </div>
              <div class="col-sm-6">
                <br/>
                <button type="button" class="add-to-basket btn btn-success" >ADD TO CART</button>
              </div>
            </div>
            <div class="col-md-1"></div>
            <div class="col-md-7" id="desc">
              <p><b>Model:</b> <?php echo $details['model'];?></p>
              <p><b>Engine:</b>  <?php echo $details['engine'];?></p>
              <h4>Description</h4>
              <p><?php echo $details['description'];?></p>
              <hr>
              <hr>
            </div>

          </div>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>
    </div>
  </div>
</div>
<?php endwhile; ?>

这甚至可以用我有的解决方案吗?我什至在第一页加载时都没有得到任何内容,我需要刷新它,以便我的 ID 保存到变量中,然后它会显示一些内容。

【问题讨论】:

  • 您的.show-modal 按钮和模态代码是否在同一个文件中??

标签: javascript php jquery html ajax


【解决方案1】:

在您的 javascript 中添加以下内容。它从模态体中删除以前的数据。在加载新内容之前,您可能会遇到一些延迟。

$(document.body).on('hidden.bs.modal', function () {
   $("#itemBox").removeData('bs.modal');
});

【讨论】:

  • 它删除了旧数据,但现在我的模态数据不会生成
  • 您不是从其他文件加载模态内容吗? ' .show-modal ' 类是否添加到锚标记 () 中?
猜你喜欢
  • 2017-05-08
  • 2016-04-07
  • 1970-01-01
  • 2017-04-17
  • 2014-11-13
  • 1970-01-01
  • 2018-03-29
  • 1970-01-01
  • 2019-02-14
相关资源
最近更新 更多