3

この例 ( http://www.jqwidgets.com/jquery-widgets-documentation/documentation/java-integration/bind-jquery-grid-to-mysql-database-using-jsp.htm ) の手順に従いますが、表示するデータがありません。

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","name":"aa"},{"id":"58","name":"qq"},{"id":"59","name": "ii"},{"id":"60","name":"jenny"},{"id":"61","name":"candy"},{"id":"62", "name":"f"},{"id":"63","name":"pp"},{"id":"66","name":"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
            }]
        });
    });

出力にグリッドがありますが、表示するデータがありません。(画像載せれなくてすみません。)

エラーが発生しました:

ステータス =parsererror、エラー =SyntaxError: JSON 解析エラー: 認識できないトークン '<'

この問題を解決するにはどうすればよいですか? ありがとう!

4

1 に答える 1

0

あなたの問題は、ソース データの説明 (クライアント側) を入力していないことだと思います。4 番目のレコードの ID は 60 で、たまたま < 文字です。ドキュメントには、 type は必須フィールドであると記載されています (ただし、例では常に使用されているとは限りません)。

datafields:[{name:'id',type:'int'},タイプを追加するとvar source = {、問題が解決する場合があります。'number'id のタイプとして使用することもできます。'string'タイプをnameフィールドに追加することも効果的です。

これがうまくいくことを願っています。

于 2015-05-24T20:32:00.303 に答える