0

我在 ExtJS 脚本中有一个 AJAX 调用,但我不确定如何获取返回的 JSON 对象并将其分配给一个变量以在页面上使用。我基本上采用硬编码的 extJS 脚本并从数据库中输入 JSON。这是我需要做的

从此 AJAX 调用中获取一个变量:

Ext.onReady(function () {
Ext.Ajax.request({
url: '/xxx/clienttool/components/Client-Tool.cfc?method=getResources&returnformat=json',
params: {
accountID: 463
},
success: function(response){
var text = response.responseText;
// process server response here
}

});

并分配它,这样这些值就不会被硬编码:

// Store holding all the resources
        resourceStore     : Ext.create("Sch.data.ResourceStore", {
            model : 'Sch.model.Resource',
            data  : [
                {Id : 'MadMike', Name : 'Mike'},
                {Id : 'JakeTheSnake', Name : 'Jake'},
                {Id : 'KingFu', Name : 'King'},
                {Id : 'BeerBrian', Name : 'Brian'},
                {Id : 'LindaAnderson', Name : 'Linda'},
                {Id : 'DonJohnson', Name : 'Don'},
                {Id : 'KarenJohnson', Name : 'Karen'},
                {Id : 'DougHendricks', Name : 'Doug'},
                {Id : 'PeterPan', Name : 'Peter'}
            ]
        }),

这是整个事情:

    Ext.onReady(function () {

    App.SchedulerDemo.init();
});

App.SchedulerDemo = {

// Initialize application
init : function () {
    Ext.define('Event', {
        extend : 'Sch.model.Event',
        fields : [
            {name : 'Title'},
            {name : 'Type'}
        ]
    });


    //ajax call to get resources for this accountID
    Ext.Ajax.request({
        url: '/xxxx/clienttool/components/Client-Tool.cfc?method=getResources&returnformat=json',
        params: {
        accountID: 463
        },
        success: function(response){
            getResources = response.responseText;
        // process server response here
        }
    });
    //alert(getResources);

    var zoneStore = Ext.create('Ext.data.JsonStore', {
        model : 'Sch.model.Range',
        data  : [
            {
                // Nice 2 hour lunch
                StartDate : new Date(2011, 11, 9, 12),
                EndDate   : new Date(2011, 11, 9, 14),
                Cls       : 'lunch-style'
            }
        ]
    });

    var sched = Ext.create("Sch.panel.SchedulerGrid", {
        height                  : ExampleDefaults.height,
        width                   : ExampleDefaults.width,
        rowHeight               : 40,
        eventBarTextField       : 'Title',
        viewPreset              : 'hourAndDay',
        startDate               : new Date(2011, 11, 9, 7),
        endDate                 : new Date(2011, 11, 9, 20),
        orientation             : 'vertical',
        constrainDragToResource : false,
        eventBarIconClsField    : 'Type',
        snapToIncrement         : true,
        //constrainDragToResource : true,
        eventResizeHandles      : 'end',

        viewConfig : {
            // Experimental for CSS3 enabled browsers only
            eventAnimations : true
        },

         // Store holding all the resources
        resourceStore     : Ext.create("Sch.data.ResourceStore", {
            model : 'Sch.model.Resource',
            data  : 
            [
                {Id : 'MadMike', Name : 'Mike'},
                {Id : 'JakeTheSnake', Name : 'Jake'},
                {Id : 'KingFu', Name : 'King'},
                {Id : 'BeerBrian', Name : 'Brian'},
                {Id : 'LindaAnderson', Name : 'Linda'},
                {Id : 'DonJohnson', Name : 'Don'},
                {Id : 'KarenJohnson', Name : 'Karen'},
                {Id : 'DougHendricks', Name : 'Doug'},
                {Id : 'PeterPan', Name : 'Peter'}
            ]

        }),
4

1 回答 1

0

如果 AJAX 请求的唯一目的是为您的网格存储检索数据,我会完全放弃它,并在您的存储上简单地定义一个AJAX 代理。它不仅会完成相同的初始目标(例如,为您的商店获取数据),还会处理创建数据的模型实例并将商店绑定到您的网格。

我建议查看Store 的文档以及文档中的网格示例

于 2013-05-25T20:08:39.280 回答