首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法在EXTJS多选中加载JSON

无法在EXTJS多选中加载JSON
EN

Stack Overflow用户
提问于 2012-05-24 11:57:37
回答 1查看 654关注 0票数 0

我无法在EXTJS中显示多选框中的条目。下面是我的EXTJS多选和相应面板的代码:

代码语言:javascript
运行
复制
var selectTrain = [{
    bodyStyle: 'padding:10px;',
    items:[{
        xtype: 'multiselect',
        fieldLabel: 'Multiselect',
        name: 'multiselect',
        width: 250,
        height: 200,
        id: 'selectTrain',
        store: new Ext.data.JsonStore({
            type: 'ajax',
            url:'http://abc.com/xyz',
            reader: 'json',
            autoLoad:true      
        }),
        ddReorder: true
    }]
}];


// combine all that into one huge form
var fp = new Ext.FormPanel({
    title: '',
    frame: true,
    labelWidth: 300,
    width: 800,
    renderTo:'report',
    bodyStyle: 'padding:0 10px 0;',
    items: [
        {
            layout: 'column',
            border: false,
            // defaults are applied to all child items unless otherwise specified by child item
            defaults: {
                columnWidth: '1',
                border: false
            },            
            items: [selectTrain]
        },
    ],
    buttons: [{
        text: 'Go',
        handler: function(){}
    },{
        text: 'Reset',
        handler: function(){
            fp.getForm().reset();
        }
    }]
});

我可以点击servlet的URL,并看到下面的http://abc.com/xyz正在Firebug控制台上编写:

代码语言:javascript
运行
复制
{"54850":"5.1(1t)d1(3)","54852":"5.1(1t)a2(3)","54853":"5.1(1t)l2(1)","54841":"1.2(4)S1(1)","54789":"5.3(1)T","54849":"5.1(1t)s1(2)","54854":"5.1(1t)l2(5)","54855":"5.1(1t)s2(6)","54847":"1.1(12a)SG"}

http://abc.com/xyz的servlet代码是:

代码语言:javascript
运行
复制
           PrintWriter out = response.getWriter();
           JSONObject jsonObj=new JSONObject();
           for (Iterator iterator = allRelInfoPools.iterator(); iterator
            .hasNext();) {
               Vector v = (Vector) iterator.next();
               jsonObj.put((String)v.get(0),(String)v.get(1));

    }
           out.println(jsonObj);

请告诉我,我哪里错了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-24 13:31:13

您可能正在尝试发出跨域AJAX请求(例如,您的应用程序是从http://def.com/加载的,但您正在尝试从http://abc.com/xyz加载JSON )。不幸的是,这是不允许的。

但是,您可以使用JSONP请求而不是AJAX请求。JSONP所做的是将一个脚本标记注入到DOM中,它将强制DOM下载一个JavaScript文件,该文件将在其中保存您的JSON数据。然后,您应该能够检索您的数据。

幸运的是,EXTJS允许您这样做。例如,在您的代码中,只需将storetype属性从ajax更改为jsonp

另外,将servlet代码更改为使用基于callback GET查询的JavaScript函数调用来“填充”jsonObj变量(请注意,当通过类似于http://abc.com/xyz?callback=someCallbackFunction的URL发出GET请求时,将检索callback GET查询)。

下面是你的最后一行应该是什么样子:

代码语言:javascript
运行
复制
out.println(callbackParam + "(" + jsonObj + ");");

其中,callbackParam是从GET查询的callback参数中获得的值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10730937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档