Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JQWidgets-Jqxgrid“;没有要显示的数据";,JSON解析错误_Javascript_Json_Jsp_Jqxgrid_Jqwidget - Fatal编程技术网

Javascript JQWidgets-Jqxgrid“;没有要显示的数据";,JSON解析错误

Javascript JQWidgets-Jqxgrid“;没有要显示的数据";,JSON解析错误,javascript,json,jsp,jqxgrid,jqwidget,Javascript,Json,Jsp,Jqxgrid,Jqwidget,我按照此示例()的步骤操作,但没有要显示的数据 jqxgrid.jsp文件: ResultSet result = state.executeQuery(sql1); JsonArray recordsArray = new JsonArray(); while (result.next()) { JsonObject currentRecord = new JsonObject(); currentRecord.add("id", n

我按照此示例()的步骤操作,但没有要显示的数据

jqxgrid.jsp文件:

ResultSet result = state.executeQuery(sql1);
JsonArray recordsArray = new JsonArray();
while (result.next()) {
    JsonObject currentRecord = new JsonObject();
    currentRecord.add("id",
            new JsonPrimitive(result.getString("id")));
    currentRecord.add("name",
            new JsonPrimitive(result.getString("name")));
    recordsArray.add(currentRecord);
}

out.print(recordsArray);
out.flush();
在jsp文件中,我可以得到JsonArray的结果:

[{“id”:“57”,“姓名”:“aa”},{“id”:“58”,“姓名”:“qq”},{“id”:“59”,“姓名”:“ii”},{“id”:“60”,“姓名”:“珍妮”},{“id”:“61”,“姓名”:“糖果”},{“id”:“62”,“姓名”:“f”},{“id”:“63”,“姓名”:“pp”},{“id”:“66”,“姓名”:“kkk”}]

jqxgrid.html文件:

 $(document).ready(function () {
        
        var source = {
            datatype: "json",
            datafields: [{name: 'id'}, 
                         {name: 'name'}],
           url:"jqxgrid.jsp"
        };
       
        var dataAdapter = new $.jqx.dataAdapter(source, {
            downloadComplete: function (data, status, xhr) { },
            loadComplete: function (data) { },
            loadError: function (xhr, status, error) {alert('Status ='+ status +',  Error ='+ error ); }
        });
        $("#jqxgrid").jqxGrid({
            width: 400,
            autoheight: true,
            source: dataAdapter,
            columns: [{
                text: 'ID',
                datafield: 'id',
                width: 200
            }, {
                text: 'Name',
                datafield: 'name',
                width: 200
            }]
        });
    });
输出中有网格,但没有显示数据。 (抱歉,我无法发布图像。)

出现错误:


Status=parserror,Error=SyntaxError:JSON解析错误:无法识别的令牌“我认为您的问题在于没有键入源数据描述(客户端)。第四条记录的id是60,正好是<字符。文档中说类型是必填字段(尽管他们的示例并不总是使用它)

如果您将类型
数据字段:[{name:'id',type:'int'},
添加到
var source={
中,这可能会解决您的问题。您还可以使用
'number'
作为id的类型。将类型
'string'
添加到
名称
字段中也可能值得


希望这对您有用。

尝试使用
virtualMode=true
:-)谢谢您的帮助!但是……,没有任何变化,网格也消失了。正如错误所解释的,在
jqxgrid.jsp
上构建的JSON有问题,请仔细检查它,并尝试添加
response.setContentType(“应用程序/json”)
非常感谢!我已经在jsp文件中添加了它,但仍然不起作用。构建json有什么问题吗?非常感谢!我已经向数据字段添加了类型,但仍然不起作用。实际上我已经尝试了很多种数据,包括jqwidget的示例数据库。这些都不起作用。只有当我使用本地数据或远程数据时(如下图所示:)。因此我认为这个问题可能来自json格式。如果您提供的json示例就是您正在使用的示例,那么该文件没有问题。在控制台中,您可以键入
json.parse(jsonString)
使用
jsonString
作为JSON文件内容。在空页面上执行此操作,然后在jpxgrid页面上执行此操作。他们可能对
JSON.parse使用了polyfill,或者可能有自己的JSON解析器。我怀疑这就是问题所在,因为您的JSON字符串没有任何问题。如果这没有帮助,请尝试检查MIME类型是否存在错误JSON jsp文件。正式名称应该是
application/JSON
,但您也可以对jsp MIME类型使用非正式的“text/JSON”或“text/javascript”。