2014-04-30 3 views
0

Lorsque j'essaie de faire une requête jquery ajax "Type: Post", j'obtiens une erreur 404 introuvable (du cache). J'ai essayé plusieurs solutions de contournement pour résoudre ce problème mais cela n'a pas fonctionné. Ce sont les solutions de contournement que j'ai essayées:empêche POST-demande de mise en cache

  1. Ajout d'informations d'en-tête dans l'appel ajax: "Cache-Control": "private, no-cache, pas de magasin, doit-revalidate", "expires" : "0",

  2. jquery ajax "cache: false"

  3. ajouter rnd URL param, "?nocache=' + new Date().getTime()",

  4. essayé de désactiver AppCache (Nativ):

"super.appView.getSettings(). SetAppCacheEnabled (false);"

C'est la réponse que je reçois de cette demande POST quand je debug mon Cordova App avec des outils de dev: http://pl.vc/59s6o

+0

Cela ressemble à un problème avec votre navigateur ou le serveur, et non JQuery. – css

+0

J'ai développé ce projet en tant qu'application Web et en tant que projet Cordova. L'application Web fonctionne correctement avec la même requête que celle utilisée dans le projet Cordova. Je l'ai testé en chrome et Postman. Le problème n'apparaît que dans le projet Cordova – user3589902

Répondre

0

Essayez la définition de vos têtes dans le $.ajaxSetup

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

Nous pouvons vous aider plus si vous nous en dire plus sur votre situation et inclure votre code.

+0

Thx pour votre réponse. Malheureusement, cela ne fonctionne pas pour moi. Quand je débogue avec about: inspect (devTools) je reçois un 404 non trouvé (du cache). – user3589902

0

Pour illustrer mon problème, suivant quelques extraits de code

Ceci est mon appel 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); 
     } 
    }); 

dans src/dossier Java code:

@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"); 
} 

chaque fois que la requête Ajax Message est fait, il est dirigé à cache, et je ne sais pas comment l'empêcher. Ceci est la réponse que je reçois de la demande quand je debug mon Cordova App avec des outils de dev:

http://pl.vc/59s6o

Questions connexes