将JSON加载到ExtJS中的ComboBox中

时间:2015-01-29 17:21:42

标签: ajax json jsp servlets extjs

我是jspExtJS的新手。我有一个jsp文件,我向AJAX发送了servlet个请求。 servletJSON作为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

有人可以告诉我哪里出错了吗?

提前致谢。

2 个答案:

答案 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以供参考。

希望这会对你有所帮助。