我是jsp
和ExtJS
的新手。我有一个jsp
文件,我向AJAX
发送了servlet
个请求。 servlet
将JSON
作为String
返回。收到JSON
后,我必须填充ComboBox
。虽然servlet
正在返回JSON
,但我的ComboBox
无法加载数据。
以下是我的代码中的一些代码段。
生成servlet
的{{1}}代码:
JSON
...
String sql = "SELECT DISTINCT category FROM ProductTable ORDER BY category";
ResultSet rs = stmt.executeQuery(sql);
JSONArray list = new JSONArray();
while (rs.next()) {
JSONObject obj = new JSONObject();
String cat = rs.getString("category");
obj.put("category", cat);
list.add(obj);
}
JSONObject resultObject = new JSONObject();
resultObject.put("result", list);
StringWriter output = new StringWriter();
resultObject.writeJSONString(output);
String jsonText = output.toString();
System.out.print(jsonText);
...
response.setContentType("text/plain");
response.getWriter().write(jsonText);
代码:
jsp
有人可以告诉我哪里出错了吗?
提前致谢。
答案 0 :(得分:2)
我建议保留数据存储的引用,如下所示。
var dataStore = new Ext.data.JsonStore({
autoLoad : true,
data : JSONForCategory,
root : 'result',
fields : [ 'category' ]
});
然后您可以从下面的combo box
中引用它。
{
xtype : 'combo',
fieldLabel : 'Category',
name : 'category',
displayField : 'category',
valueField : 'category',
mode : 'local',
triggerAction : 'all',
store : dataStore
}
然后从你的ajax回调函数,你可以加载数据到存储如下。
JSONForCategory = Ext.JSON.decode(responseText);
console.log(JSONForCategory);
dataStore.loadData(JSONForCategory);
答案 1 :(得分:0)
您可以使用以下方法在html标记中使用 数据选项 加载json文件。
<input class="easyui-combobox" name="language" style="width:50%"
data-options="
url: 'combobox_data2.json', /* load your json file name */
method: 'get',
valueField:'value',
textField:'text',
groupField:'group'
">
检查Combo Box以供参考。
希望这会对你有所帮助。