ajax完成后清除Phonegap应用程序上的缓存或清除javascript变量
我使用Phonegap、jquery和剑道UI创建了一个Android应用程序。我还有一个多ajax请求 现在在我的应用程序中,我有一个createinvoiceajax请求,它使用PUT将数据添加到我的Rest服务中。当我已经创建了一个事务(发票)并尝试创建另一个事务时,一切都正常,数量不会恢复为1,也不会创建新事务,只返回我创建的最后一个事务(注意:它从我的ajax调用成功回调) 我的问题是如何在不退出应用程序的情况下清除android上的缓存 更新ajax完成后清除Phonegap应用程序上的缓存或清除javascript变量,javascript,jquery,android,ajax,cordova,Javascript,Jquery,Android,Ajax,Cordova,我使用Phonegap、jquery和剑道UI创建了一个Android应用程序。我还有一个多ajax请求 现在在我的应用程序中,我有一个createinvoiceajax请求,它使用PUT将数据添加到我的Rest服务中。当我已经创建了一个事务(发票)并尝试创建另一个事务时,一切都正常,数量不会恢复为1,也不会创建新事务,只返回我创建的最后一个事务(注意:它从我的ajax调用成功回调) 我的问题是如何在不退出应用程序的情况下清除android上的缓存 更新 我发现,当我成功地创建了一个发票之后,变
我发现,当我成功地创建了一个发票之后,变量仍然充满了从上一个事务中存储的数据。因此,我怎样才能以某种方式重置所有内容以允许新数据。我添加了这个
location.reload(true)
但希望找到有关此问题的其他解决方案。谢谢。在使用Cordova(PhoneGap)并在Android 2.3模拟器上运行时,我在中测试示例ToDo backbone.js应用程序时遇到了一个非常类似的问题
我遇到的问题是,对特定URL进行了第一次GET或PUT,但是对相同模型实例(即相同URL)的后续请求或更新没有发送到RESTful服务器,即使jQuery.ajax调用返回成功
这个问题原来是Android 2.3中的Android浏览器没有将后续请求传递到同一URL的问题。在此处找到确认后:
最后,我修改了主干模型和集合url:函数,将唯一的时间戳附加到url。这使得每个URL都是唯一的,然后浏览器按照最初的要求每次都发出ajax请求
以下是我用于收集的代码的摘录:
var TodoList = Backbone.Collection.extend({
// Reference to this collection's model.
model: app.Todo,
urlRoot: 'http://<RESTful_server_address_goes_here>/todos/',
url: function() {
var base = _.result(this, 'urlRoot') || urlError();
var ts = new Date().getTime();
// Make sure that there is a trailing slash on the url, and add a timestamp
return base + (base.charAt(base.length - 1) === '/' ? '' : '/') + '?_' + ts;
},
...
});
请注意,在提出此解决方案之前,我尝试了许多方法,其中之一就是在backbone.sync的覆盖中将jQuery.ajax缓存(参见jQuery.ajax文档)设置为false,但这不起作用。下面是代码:
app.sync = function(method, model, options) {
// THIS DOES NOT FIX THE PROBLEM !!
// IT ONLY PREVENTS CACHING ON GET OPERATIONS
// HOWEVER PUT OPERATIONS ARE STILL CACHED BY ANDROID 2.3 BROWSER!!
options.cache = false;
return Backbone.sync(method, model, options);
};
任何人关于这件事有什么想法吗?
app.sync = function(method, model, options) {
// THIS DOES NOT FIX THE PROBLEM !!
// IT ONLY PREVENTS CACHING ON GET OPERATIONS
// HOWEVER PUT OPERATIONS ARE STILL CACHED BY ANDROID 2.3 BROWSER!!
options.cache = false;
return Backbone.sync(method, model, options);
};