使用查询字符串参数而不是一个;范围:“;Dojo'中的HTTP头;s JsonRest

使用查询字符串参数而不是一个;范围:“;Dojo'中的HTTP头;s JsonRest,json,proxy,dojo,pagination,dgrid,Json,Proxy,Dojo,Pagination,Dgrid,我正在尝试在Dojo中设置分页。我基本上有一个包含数千条记录的表,我希望将它们逐页显示给用户,而不是一次全部显示出来。我将dgrid与JsonRest存储一起使用。根据JsonRest的文档,存储使用HTTP的“Range:”头来执行分页。当对一系列项目发出请求时,存储将包括一个“范围:”标题,其中项目范围单位指定了范围。()不幸的是,这是一个大问题,因为我们的一些用户使用的代理过滤掉了HTTP的范围头。我看到的唯一解决方法是使用查询字符串参数,而不是“Range:”HTTP头。所以我有一个UR

我正在尝试在Dojo中设置分页。我基本上有一个包含数千条记录的表,我希望将它们逐页显示给用户,而不是一次全部显示出来。我将dgrid与JsonRest存储一起使用。根据JsonRest的文档,存储使用HTTP的“Range:”头来执行分页。当对一系列项目发出请求时,存储将包括一个“范围:”标题,其中项目范围单位指定了范围。()不幸的是,这是一个大问题,因为我们的一些用户使用的代理过滤掉了HTTP的范围头。我看到的唯一解决方法是使用查询字符串参数,而不是“Range:”HTTP头。所以我有一个URL,看起来像: 而不是将范围标题设置为“范围:项目=0-24”


我将如何着手解决这个问题?如果您有其他解决方案的建议,我们也将不胜感激。

我找到了一个简单的解决方案。只需覆盖Dojo的JsonRest类,并在创建dgrid时使用它而不是JsonRest

define(["dojo/_base/declare", "dojo/store/JsonRest"], function(declare, JsonRest){
    var base = JsonRest;
    return declare("myapp.JsonRest2", base, {

        query: function(query, options){
            if(options.start >= 0 || options.count >= 0){
                query.start = options.start >= 0 ? options.start : 0;
                query.count = options.count >= 0 ? options.count : 10;
            }
            return this.inherited(arguments);
        }
    });
});