如何在Extjs中进行ajax调用时调用有限数量的数据?

时间:2013-09-30 07:20:23

标签: javascript ajax json extjs

我目前正在使用Extjs构建一个应用程序(我是这个框架的新手)。在这个框架中,我遵循了MVC架构。目前我正在开发一个ajax调用来定义一个表格,该表格显示来自Json File的记录。在我的json文件中,我有超过100条记录,我在我的商店调用该文件,如下所示:

Ext.define('AM.store.Users',{
extend: 'Ext.data.Store',
 model: 'AM.model.User',
 pageSize: 15,
 proxy: {
    type: 'ajax',
    api:{
        read: 'data/users.json',
        update: 'data/updateUsers.json', 
    },
        reader: {
        type: 'json',
        root: 'users',
        successProperty: 'success'
    }
 },
  autoLoad: true,

});

在我的视口上我有以下PagingToolbar

bbar : Ext.create('Ext.PagingToolbar', {
                    displayInfo : true,
                    store:'Users',
                    pageSize: 15,
                    displayMsg : '{0} - {1} of {2}',
                    emptyMsg : "No topics to display"
                })

在创建工具栏之前,我已经显示了如下网格:(它使用Xtype,因为我已经定义了asss别名)

xtype : 'userlist',

就我对Extjs的理解而言,这个网格应该一次显示15条记录,依此类推,但是这个网格一次性加载Json文件的所有记录,并在其下面提供了pagingtoolbar。如果有人能帮助我理解这一点,那将更加值得赞赏

1 个答案:

答案 0 :(得分:1)

这是关于服务器端问题。 你的休息请求就是这样。

http://your-host/XXXX-your-path/data/users.json?_dc=1380538796920&page=1&start=0&limit=15

这是一个GET http方法。 你的服务器端必须正确处理它。 我的代码你可以看看,我认为它可能会有所帮助。(它是一个弹簧控制器)

@RequestMapping(value = "/admin/user/user.json", method = RequestMethod.GET)
@ResponseBody
    public LinkedHashMap<String, Object> listUsers(@RequestParam int page,@RequestParam int start,@RequestParam int limit) {
        Page pageItem = new Page(page,start,limit);
        List<User> plist = userDao.findAllByPage(pageItem);
        LinkedHashMap<String, Object> result = new LinkedHashMap<String, Object>();
        result.put("success", true);
        if (plist != null) {
            result.put("count", pageItem.getTotalCount());
            result.put("data", plist);
        } else {
            result.put("count", 0);
            result.put("data", plist);
        }
        return result;
    }

重要的是正确处理Page Params。 我的英语很差,但我真的想帮助你。