我想有一个Dojo与它的数据dojox.grid.DataGrid。
问题:从servlet返回的数据没有显示,只显示消息“对不起,发生了错误”。
如果我将JSON字符串放到HTML中,它就可以工作。ARRRRGGH。
有谁能帮帮我!
谢谢Jeff Porter
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();"/>发布于 2010-05-31 09:11:42
当您使用从服务器返回的JSON数据创建dojo.data.ItemFileWriteStore时。您只需提供项,您仍然需要指定元数据。正确的代码应该如下所示。
var ddInfoX = new dojo.data.ItemFileWriteStore({
data: {
identifier: 'batchId',
label: 'batchId',
items: xx
}
});而且不需要dojo.toJson函数将JSON对象转换为JSON字符串。dojo.data.ItemFileWriteStore需要一个JSON对象作为参数,而不是JSON字符串。
https://stackoverflow.com/questions/2903970
复制相似问题