jquery
  • ajax
  • caching
  • cordova
  • 2014-04-30 211 views 0 likes 
    0

    当我尝试制作jquery ajax“Type:Post”请求时,我得到一个404找不到(来自缓存)的错误。我已经尝试了几种解决方法来解决这个问题,但它不起作用。这是我试过的解决方法:防止缓存POST请求

    1. 在Ajax调用添加标题信息: “缓存控制”:“私,无缓存,无店铺,必重新验证”, “过期” : “0”,

    2. jQuery的AJAX “缓存:假”

    3. 添加RND网址PARAM,"?nocache=' + new Date().getTime()",

    4. 尝试禁用应用程序缓存(NATIV):

    “super.appView.getSettings()。setAppCacheEnabled(false);”

    这是我从这个POST请求得到响应时调试我科尔多瓦应用程序与开发工具: http://pl.vc/59s6o

    +0

    这听起来像您的浏览器或服务器,而不是JQuery的一个问题。 – css

    +0

    我开发这个项目作为一个Web应用程序和Cordova项目。 Web应用程序可以正常使用我在Cordova项目中使用的相同请求。我用铬和邮差测试过它。该问题仅在科尔多瓦项目 – user3589902

    回答

    0

    尝试在$.ajaxSetup

    $.ajaxSetup({ 
        type: 'POST', 
        headers: { "cache-control": "no-cache" } 
    }); 
    

    设置你的头,我们可以帮助你更多,如果你告诉我们更多关于你的情况,并包括你的代码。

    +0

    Thx中出现,供您回复。不幸的是这不适合我。当我使用about:inspect(devTools)进行调试时,我得到一个404 not found(来自缓存)。 – user3589902

    0

    为了说明我的问题,下面的一些代码片段

    这是我的Ajax调用:

    $.ajaxSetup({ 
         headers: { 
          "X-Requested-With" : "XMLHttpRequest", 
          "Content-Type" : "application/atom+xml", 
          "cache-control" : "no-cache", 
          "DataServiceVersion" : "2.0", 
          "X-CSRF-Token" : header_xcsrf_token, 
         },   
         cache: false, 
        }); 
    
        $.ajax({ 
         type: 'POST', 
         url: url + new Date().getTime(), 
         data : data, 
         beforeSend : function(xhr) { 
          // crypto call before authentication 
          var bytes = Crypto.charenc.Binary.stringToBytes(user + ":" + password); 
          var base64 = Crypto.util.bytesToBase64(bytes); 
          //build request header 
          xhr.setRequestHeader("Authorization", "Basic " + base64);    
         }, 
         success: function(data, status, xhr) { 
          alert("data sent"); 
         }, 
         error: function(jqXHR, textStatus, errorThrown){ 
          alert(textStatus + " " + errorThrown + " " + jqXHR.status + " " + jqXHR.responseText); 
         } 
        }); 
    
    中的src /文件夹中的Java代码

    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
        super.onCreate(savedInstanceState); 
        super.init(); 
    
        super.appView.getSettings().setAppCacheEnabled(false); 
        super.loadUrl(Config.getStartUrl()); 
        CookieManager.getInstance().setAcceptCookie(true); 
        // Set by <content src="index.html" /> in config.xml 
        //super.loadUrl("file:///android_asset/www/index.html"); 
    } 
    

    每次阿贾克斯发布采购信息它被引导到缓存,并且我不知道如何防止它。这是我从请求得到响应时调试我的科尔多瓦与应用程序开发工具:

    http://pl.vc/59s6o

    相关问题