javascript - 在弹出窗口中显示带有 Ajax 数据源的 jQuery DataTables

标签 javascript jquery html ajax datatables

我试图根据 Ajax 请求在弹出窗口中给出一个列表。在 Ajax 请求之前,列表在弹出窗口中,但在 Ajax 请求之后,列表留在页面中而不是弹出窗口中,并且弹出窗口中还有旧列表。这是代码

<script>
function CreateMap() {
    var chart = AmCharts.makeChart("piechartdiv", {
        "type": "pie",
        "theme": "light",
        "fontFamily":"Calibri",       
        "dataProvider": [{
            "product":"Following",
            "value": @following,
            "color": "#009688"
        }, {
            "product":"Not Following",
            "value": @notFollowing ,
            "color": "#555555"

        }],
        "legend": {
            "align" : "right",
            "fontSize" : 14
        },
        "marginLeft":-100,
        "marginTop":-45,
        "marginBottom":0,
        "labelsEnabled":false,
        "colorField": "color",
        "valueField": "value",
        "titleField": "product",
        "outlineAlpha": 0.4,
        "depth3D": 15,
        "balloonText": "[[title]]<br><span style='font-size:14px'><b>[[value]]</b> ([[percents]]%)</span>",
        "angle": 20,
        "export": {
            "enabled": true
        }
    });

    jQuery('.chart-input').off().on('input change', function () {
        var property = jQuery(this).data('property');
        var target = chart;
        var value = Number(this.value);
        chart.startDuration = 0;

        if (property == 'innerRadius') {
            value += "%";
        }

        target[property] = value;
        chart.validateNow();  
    });
    chart.addListener("clickSlice", function (event) {
        if ( event.dataItem.title == 'Unfollowing')
        {
            document.getElementById("s_open").click();
        }
    }); 
}
var isAjax = @isAjax;
if(isAjax)
{
    CreateMap();
}
else
{
    AmCharts.ready(function () {
        CreateMap();
    });
}

<button id="s_open" class="s_open btn-default" style="display:none;">Open popup</button>

<div id="s_follow">
<div class="row" style="border-radius:5px; padding:20px; background-color:#fff;">
    <table id="hostTable" class="table table-striped" cellspacing="0">
        <thead>
            <tr>
                <th>Host Table</th>
            </tr>
        </thead>
        <tbody>
            @Html.Raw(comparedDataTable.ToString())
        </tbody>
    </table>
    <button class="btn s_close btn-danger">Close</button>
</div>

<script>      
    $(document).ready(function () {
        $('#hostTable').DataTable( {
            dom: 'Bfrtip',
            buttons: [
                'excelHtml5',
                'csvHtml5'
            ],
            destroy: true,
        } );
    });
    $(document).ready(function () {
        // Initialize the plugin
        $('#s_follow').popup({
            color: 'black',
            opacity: 0.5,
            transition: '0.3s',
            scrolllock: true
        });
    });  

我们如何在ajax请求后将列表hostTable放入弹出窗口?

最佳答案

SOLUTION

使用onopen选项初始化表,见下面的代码。

$(document).ready(function () {
    $('#s_follow').popup({
       color: 'black',
       opacity: 0.5,
       transition: '0.3s',
       scrolllock: true,
       vertical: "top",
       onopen: function() {
          // If table was initialized before
          if ($.fn.DataTable.isDataTable('#hostTable')){
              // Clear table
              $('#hostTable').DataTable().clear();
          }

          $('#hostTable').DataTable( {
             dom: 'Bfrtip',
             buttons: [
                'excelHtml5',
                'csvHtml5'
             ],
             destroy: true
          });
       }
    });
});

DEMO

参见 this jsFiddle用于代码和演示。

关于javascript - 在弹出窗口中显示带有 Ajax 数据源的 jQuery DataTables,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33164399/

相关文章:

javascript - 未捕获错误 : Expected onClick listener to be a function, 而得到类型字符串

javascript - 如何使用 addclass 和 removeclass 方法更改 textarea(NicEdit 中使用的 textarea)的 css 类

html - 如果设置在 body 标签上,背景颜色是否默认占据整个视口(viewport)?

javascript - 有条件地改变表格数据 Angular 2+ 的颜色

python - 如何禁用充当链接django的按钮

javascript - 怎么实现像浏览器的CTRL+一样的缩放功能

javascript - 为每个 div 添加一个数字

jquery - 搜索不区分大小写字符串的元素

javascript - 如何修复 RegEX 模式以找到所有匹配项?

jquery - 如何使 qtip 工具提示随光标移动