【问题标题】:$_GET using old values$_GET 使用旧值
【发布时间】:2016-06-15 19:39:50
【问题描述】:

我正在尝试启动远程引导模式并在模式中填充数据表。我第一次从link1 启动模态时,它可以工作并设置变量,但是如果我单击link2,模态将打开但使用来自link1 的数据,反之亦然。

在父页面上,我通过 php 创建链接,如下所示:

PHP:

echo '<a data-toggle="modal" data-target="#viewComments" href="./remotemodal.php?object='.urlencode($row['OBJECT_NAME']).'&date='.urlencode($row['DATE_OCCURED']).'&error='.urlencode($row['ERROR']).'" class="btn-sm btn-info" ><i class="fa fa-comment-o"></i> View Comments</a>';

它会正确填充链接,如下所示:

Link1: remotemodal.php?object=Cluster1&date=03%2F01%2F2016+23%3A48&error=Error1

Link2: remotemodal.php?object=Cluster2&date=03%2F02%2F2016+17%3A44&error=Error2

这里是remotemodal.php的PHP:

PHP:

<?php
    
    $object = NULL;
    $date = NULL;
    $error = NULL;
  
    echo '<script type="text/javascript">alert("' . $object . '")</script>';
    echo '<script type="text/javascript">alert("' . $date . '")</script>';
    echo '<script type="text/javascript">alert("' . $error . '")</script>';
  
    if ( !empty($_GET['object'])) {
        $object = $_GET['object'];
        $date = $_GET['date'];
        $error = $_GET['error'];
    }
    
    echo '<script type="text/javascript">alert("' . $object . '")</script>';
    echo '<script type="text/javascript">alert("' . $date . '")</script>';
    echo '<script type="text/javascript">alert("' . $error . '")</script>';
    
?>

如果我直接访问链接,它们会起作用,并且我会在 js 警报中看到正确的变量。我试图在模态关闭时从父页面清除模态数据,但没有任何效果

Javascript:

<script>
    $('body').on('hidden.bs.modal', '.modal', function () {
        $(this).removeData('bs.modal');
    });
</script>

【问题讨论】:

标签: javascript php jquery html twitter-bootstrap


【解决方案1】:

您是否通过 ajax 填充模态正文/内容?

<a data-toggle="modal" data-target="#viewComments" href="http://www.thisurl.com/never/gets?called" >Open Modal</a>

bootstrap 只是切换数据目标的可见性...链接永远不会被关注

【讨论】:

  • 不,我通过 php 填充它。它必须至少跟随链接一次,否则不会填充初始 $_GET 对吗?
  • 所以你已经生成了一个包含静态内容的页面(通过 PHP 或其他方式)。您的模态链接不会更新模态内容...它们只是切换您在页面加载时创建的模态的可见性。
【解决方案2】:

查看documentation,似乎removeData 仅适用于使用数据属性的数据集。

因此,要么您必须更改设置模态数据的方式,要么通过 jQuery 单独设置数据。

实际上,经过一番谷歌搜索,这似乎是this question.的副本

【讨论】:

    【解决方案3】:

    我最终做了不同但类似于Dynamically load information to Twitter Bootstrap modal

    在父页面上,我使用要传递的变量填充链接

    <a object="'.urlencode($row['OBJECT_NAME']).'" date="'.urlencode($row['DATE_OCCURED']).'" error="'.urlencode($row['ERROR']).'" data-toggle="modal" data-target="" href="#" class="btn-sm btn-info" ><i class="fa fa-comment-o"></i> View Comments</a>';
    

    模态框有一个隐藏的div,javascript 会在点击时显示

    <div id="modalContent" style="display:none;">
    ...table here...
    </div>
    

    然后,当单击按钮时,我从链接中获取变量,创建数据表并将变量传递给 ajax。然后,当模式关闭时,我会破坏表格,以便用户可以单击另一个链接。

    Javascript:

    $(".btn-info[data-toggle=modal]").click(function() {
      var object = $(this).attr('object');
      var date = $(this).attr('date');
      var error = $(this).attr('error');
      $('#viewComments').modal();
      $('#modalContent').show();
      table = $('#activity-report').DataTable({
        "order": [
          [0, "desc"]
        ],
        "displayLength": 10,
        "bprocessing": true,
        "bserverSide": true,
        "sAjaxSource": "remotemodal.php?object=" + object + "&date=" + date + "&error=" + error,
        "sServerMethod": "POST"
    
      });
    });
    $('#viewComments').on('hidden.bs.modal', function() {
      table.destroy();
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-05
      • 2013-05-09
      • 2012-12-15
      • 2016-08-07
      • 1970-01-01
      • 1970-01-01
      • 2018-08-18
      • 1970-01-01
      相关资源
      最近更新 更多