在PhoneGap

时间:2018-02-23 02:45:23

标签: javascript jquery cordova phonegap web-sql

我正在尝试使用PhoneGap Developer App访问WebSQL数据库结果,但我似乎无法正确访问该对象。这是一段代码示例:

db.transaction(function(tx) {
    tx.executeSql('SELECT * FROM ' + table, [],
    function (transaction, resultSet) {
        console.log(resultSet.rows);
    }, function (transaction, error) {
        console.log(error);
    });
});

此块在Chrome中完美运行,同时通过PhoneGap CLI测试PhoneGap应用。它返回控制台中的对象,CLI表示[object SQLResultSetRowList]。然后我可以通过调用:

来访问特定的行
console.log(resultSet.rows.item(0));

这在桌面CLI和开发人员应用程序中都可以正常工作。我想做的是使用jQuery $ .each:

迭代结果
$.each(resultSet.rows, function (k,v) {
    console.log(JSON.stringify(v));
});

这是我遇到问题的地方。在桌面Chrome中并使用CLI,每行都以key =>的JSON字符串正确打印到控制台。价值对。但是当我尝试在我的测试设备上使用PhoneGap开发者应用程序运行完全相同的代码时,控制台只会打印以下内容: " 100"这是"长度"结果集的键和空输出(相应的键是" item")。

迭代resultSet对象的正确方法是什么?作为参考,我在iOS 11上使用iPhone X作为我的测试设备。

1 个答案:

答案 0 :(得分:0)

我最后通过使用resultSet数据从头开始构建对象来解决这个问题:

function getIterableObjectFromResult(resultSet) {
    for (var i = 0, data = {}; i < resultSet.rows.length; i++) {
        data[i] = resultSet.rows.item(i);
    }
    return data;
}

然后可以在PhoneGap Developer应用程序中正确迭代结果输出。