0

我在 .hta 中使用 MS Access .mdb 文件来存储数据和 Javascript 插件 AccessDB.js (accessdb.org) 来连接和查询 mdb 文件。但我似乎无法让 jqGrid 显示 SQL 查询的结果。

resultSet 是 SQL 查询的结果。它似乎显示在输出到灰色 div 框的 getset() 函数中。但是由于某种原因,jqGrid 没有处理这个变量,因为我将数据设置为 resultSet 变量“data: resultSet”

在此处输入图像描述

           var myDB = new ACCESSdb("Database/data.mdb", {showErrors:true});
           var SQL = "SELECT * FROM test";
           var resultSet = myDB.query(SQL);

        jQuery(document).ready(function () {
        jQuery("#list4").jqGrid({
            datatype: "local",
            data:  resultSet,
            height: 250,
            colNames:['ID','name','phone'],
            colModel:[
                {name:'ID',index:'ID', width:60, sortable:false},
                {name:'name', index:'name', width:120, sortable:false},
                {name:'email', index:'phone', width:150, sorttype:"float"},
            ],
            multiselect: true,
            viewrecords: true,
            height: "100%",
            caption: "jqGrid and AccessDB"
        });
    getset() 
    });


function getset() {
var myDB = new ACCESSdb("Database/data.mdb", {showErrors:true});
var SQL = "SELECT * FROM test";
var resultSet = myDB.query(SQL)

$("#outbox").html(resultSet)
}

但如果手动完成,它将显示在表格中。

var resultSet = [{"ID":"1","name":"john","email":"john@gmail.com"}]

在此处输入图像描述

有人知道为什么它没有显示吗?

更新:如果我通过 eval() 函数传递 resultSet 变量,它似乎可以工作。

var qry = myDB.query(SQL)
var resultSet = eval(qry)

但我在某处读到 eval() 不推荐用于注入漏洞 什么是一个好的选择?虽然我想这应该不是问题吧?因为我在没有外部连接的私人服务器上运行它..

更新2:

我让它与 JSON.parse() 一起工作!

var qry = myDB.query(SQL)
var resultSet = JSON.parse(qry)

JSON 摇滚!

4

1 回答 1

0

首先,我建议您将使用的整个代码放在jQuery(document).ready(function () {/*here!!!*/});. 第二:您可能应该更改'ID''id'作为列名。我建议您indexcolModel. 然后你应该修复语法错误:参数在代码height中包含两次height: 250height: "100%")。然后我建议你使用 Internet Explorer 的开发者工具(按F12开始),选择“脚本”选项卡,在行设置断点resultSet = myDB.query(SQL);并验证resultSet变量返回的结果。它应该是一系列项目。

于 2013-05-17T07:49:57.597 回答