【问题标题】:How to clear the cache for diferred object for below example以下示例如何清除不同对象的缓存
【发布时间】:2015-01-14 08:33:33
【问题描述】:

我正在使用以下代码从共享点检索数据。

RESTQueries.getItemsFromList = function(){
    var deferred = $.Deferred();
    var execute = function(listName,itemId){
        if(typeof(listName)=='undefined' || listName.length==0  ){
            deferred.reject('getItemsFromList - no proper list name');
            return deferred;
        }
        var formatUrl = currentSiteUrl;
        formatUrl = (formatUrl.lastIndexOf('/')==(formatUrl.length-1))?formatUrl:(formatUrl+'/');
        var _url = (typeof(itemId)=='undefined' || itemId=='0')? (formatUrl+"_api/web/lists/getByTitle('"+listName+"')/items") :  (formatUrl+"_api/web/lists/getByTitle('"+listName+"')/items("+itemId+")");
        $.ajax({
            url: _url,
            method:'GET',
            headers:{Accept:'application/json; odata=verbose'},
            success:function(data){
                deferred.resolve(data);
            },
            error:function(err){
                deferred.reject(err.responseJSON.error.message.value);
            }
        });
        return deferred;
    };
    return {
        execute:execute 
    }
}();

为了执行这个函数,我这样称呼它

RESTQueries.getItemsFromList.execute('Pages').done(function(data){
                        console.log(data);
                    });

这是给出没有任何问题的结果。 但问题是,如果我为不同的图书馆第二次调用它,

RESTQueries.getItemsFromList.execute('Students').done(function(data){
                        console.log(data);
                    });

在这种情况下,结果也与第一个请求相同。 我认为它在缓存响应的一些地方。如何清除每个请求的响应?

【问题讨论】:

    标签: jquery json sharepoint jquery-deferred


    【解决方案1】:

    实例发生后发生

    var deferred = $.Deferred();
    

    execute 函数范围之外创建。当execute 函数第二次被调用时,done 方法将被调用,用于从前一次调用中解析的 Deferred 对象。

    解决方案

    deferred对象的声明移动到execute函数的范围内:

    var execute = function(listName,itemId){
       var deferred = $.Deferred();
       //...
    };
    

    【讨论】:

      【解决方案2】:

      尝试在你的 Ajax 调用中包含这个:

      $.ajax ({
          ...
          cache: false,
          ...
      });
      

      【讨论】:

        猜你喜欢
        • 2014-06-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-05
        • 1970-01-01
        • 2020-08-12
        • 2012-11-12
        相关资源
        最近更新 更多