Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ajax完成后清除Phonegap应用程序上的缓存或清除javascript变量_Javascript_Jquery_Android_Ajax_Cordova - Fatal编程技术网

ajax完成后清除Phonegap应用程序上的缓存或清除javascript变量

ajax完成后清除Phonegap应用程序上的缓存或清除javascript变量,javascript,jquery,android,ajax,cordova,Javascript,Jquery,Android,Ajax,Cordova,我使用Phonegap、jquery和剑道UI创建了一个Android应用程序。我还有一个多ajax请求 现在在我的应用程序中,我有一个createinvoiceajax请求,它使用PUT将数据添加到我的Rest服务中。当我已经创建了一个事务(发票)并尝试创建另一个事务时,一切都正常,数量不会恢复为1,也不会创建新事务,只返回我创建的最后一个事务(注意:它从我的ajax调用成功回调) 我的问题是如何在不退出应用程序的情况下清除android上的缓存 更新 我发现,当我成功地创建了一个发票之后,变

我使用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);  

};