Init table with data 仅适用于断点

Init table with data works only with breakpoint

我使用 ajax.

获得的数据初始化 table(使用此库 bootstrap-table
var arr = [];
        var getRows = function () {
            $.ajax({
                type: "GET",
                url: hostUrl,
                contentType: "application/json;",
                dataType: "json",
                success: function (result) {
                    arr = result.d;
                }
            });
            return arr; // breakpoint here
        };

$('#bootstrap-table').bootstrapTable({
            data: getRows()
});

仅当我在 getRows 函数中的 return 上设置断点时,此代码才有效。尝试在 return 之前添加超时 - 但这没有帮助。

如果我不添加断点,我将一无所获。

ajax 调用是异步的。

arr 在调用返回之前返回。

你最好选择这样的东西:

        $.ajax({
            type: "GET",
            url: hostUrl,
            contentType: "application/json;",
            dataType: "json",
            success: function (result) {
                $('#bootstrap-table').bootstrapTable({
                 data: result.d
                });
            }
        });

您在查询中缺少异步参数

$.ajax({
            type: "GET",
            url: hostUrl,
            async: false, //This is the guy you want !!!!!!!!!!!!!
            contentType: "application/json;",
            dataType: "json",
            success: function (result) {
                arr = result.d;
            }
        });

实际上你最好使用 promises。只需 return $.ajax 承诺并处理该函数外部的数据 return:

// GetRows promises to return rows of data...
var getRows = function () {

    // simply return the ajax promise
    return $.ajax({
        type: "GET",
        url: hostUrl,
        contentType: "application/json;",
        dataType: "json",
    });
};

然后这样消费:

// Use the returned promise to process the data
getRows().done(function(rows){
    $('#bootstrap-table').bootstrapTable({
        data: rows
    });
});

回调或 success: 处理程序的问题是您正在将 GUI 依赖项构建到 GetRows 方法中。