Javascript 无法在EXTJS multi-select中加载JSON

Javascript 无法在EXTJS multi-select中加载JSON,javascript,servlets,extjs,Javascript,Servlets,Extjs,我无法在EXTJS的多选择框中显示条目。以下是我的EXTJS multi-select和相应面板的代码: var selectTrain = [{ bodyStyle: 'padding:10px;', items:[{ xtype: 'multiselect', fieldLabel: 'Multiselect', name: 'multiselect', width: 250, height: 2

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

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,看到Firebug控制台上正在编写以下JSON:

{"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"}
的servlet代码是:


请告诉我,我哪里出错了?

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

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

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

另外,使用基于
回调
GET查询的JavaScript函数调用将servlet代码更改为“pad”变量
jsonObj
(注意,当通过如下URL发出GET请求时,会检索
回调
GET查询)

下面是您的最后一行的外观:

out.println(callbackParam + "(" + jsonObj + ");");
其中,
callbackParam
是从GET查询的
callback
参数中获得的值

out.println(callbackParam + "(" + jsonObj + ");");