从Servlet填充dojox.grid.DataGrid

从Servlet填充dojox.grid.DataGrid,dojo,dojox.grid.datagrid,Dojo,Dojox.grid.datagrid,我想要一个Dojo dojox.grid.DataGrid,其中包含来自servlet的数据 问题:从servlet返回的数据没有显示,只是显示消息“对不起,发生了错误” 如果我只是将JSON字符串放入HTML中,它就可以工作了。啊 谁能帮帮我吗 谢谢 杰夫·波特 Servlet代码 public void doGet(HttpServletRequest req, HttpServletResponse resp) { res.setContentType("json"); P

我想要一个Dojo dojox.grid.DataGrid,其中包含来自servlet的数据

问题:从servlet返回的数据没有显示,只是显示消息“对不起,发生了错误”

如果我只是将JSON字符串放入HTML中,它就可以工作了。啊

谁能帮帮我吗

谢谢 杰夫·波特

Servlet代码

public void doGet(HttpServletRequest req, HttpServletResponse resp) {
    res.setContentType("json");
    PrintWriter pw = new PrintWriter(res.getOutputStream());
    if (response != null) pw.println("[{'batchId':'2001','batchRef':'146'}]");
    pw.close();
}
HtmL代码

    <div id="gridDD" dojoType="dojox.grid.DataGrid" 
    jsId="gridDD" style="height: 600x; width: 100%;" 
    store="ddInfo" structure="layoutHtmlTableDDDeltaSets">
    </div>      

    var rawdataDDInfo = ""; // empty at start
    ddInfo = new dojo.data.ItemFileWriteStore({
        data: {
            identifier: 'batchId',
            label: 'batchId',
            items: rawdataDDInfo
        }
    });
    <script>
    function doSelectBatchsAfterDate() {
    var xhrArgs = {
        url: "../secure/jsonServlet",
        handleAs: "json",
        preventCache: true,
        load: function(data) {
        var xx =dojo.toJson(data);
            var ddInfoX = new dojo.data.ItemFileWriteStore({data: xx});
            dijit.byId('gridDD').setStore(ddInfoX);
        },
        error: function(error) {
                alert("error:" + error);
        }
    }

    //Call the asynchronous xhrGet
    var deferred = dojo.xhrGet(xhrArgs);
    }
    </script>
<img src="go.gif" onclick="doSelectBatchsAfterDate();"/>

var rawdataDDInfo=“”;//开始时为空
ddInfo=new dojo.data.ItemFileWriteStore({
数据:{
标识符:“batchId”,
标签:“batchId”,
项目:RawDatadInfo
}
});
函数doSelectBatchsAfterDate(){
变量xhrags={
url:“../secure/jsonServlet”,
handleAs:“json”,
对,,
加载:函数(数据){
var xx=dojo.toJson(数据);
var ddinfo=new dojo.data.ItemFileWriteStore({data:xx});
dijit.byId('gridDD').setStore(ddinfo);
},
错误:函数(错误){
警报(“错误:+错误”);
}
}
//调用异步xhrGet
var deferred=dojo.xhrGet(xhrags);
}

使用服务器返回的JSON数据创建
dojo.data.ItemFileWriteStore
时。您只需提供项目,还需要指定元数据。正确的代码应如下所示

var ddInfoX = new dojo.data.ItemFileWriteStore({
    data: {
        identifier: 'batchId',
        label: 'batchId',
        items: xx
    }
});
您不需要将JSON对象转换为JSON字符串的
dojo.toJson
函数。
dojo.data.ItemFileWriteStore
需要一个JSON对象作为参数,而不是JSON字符串。

请参见此答案