2012-03-16 17 views
6

Quando ho aggiunto appcache alla mia webapp con jquery mobile, tutte le chiamate ajax che richiedevano file json dal mio server si bloccavano. Il mio file manifest è simile al seguente:Come posso consentire le richieste JSON quando utilizzo la funzione appcache di HTML5?

CACHE MANIFEST 

CACHE: 

index.html 
scripts/jquery-1.7.1.min.js scripts/jquery.flot.min.js 
scripts/jquery.flot.threshold.min.js 
scripts/jquery.mobile-1.0.1.min.js 
styles/jquery.mobile-1.0.1.min.css 
styles/touchStyles.css 
styles/styles.css 

NETWORK: 

index.appcache 
dataFetchAndDraw.js 
initJson 

Dove initJson è una delle chiamate che non funzionerà. Ho provato a inserire l'indirizzo completo (aaa: bbb: ccc: ddd: 6565/initJson) anche senza successo.

Nel mio file .htaccess ho solo questa linea:

AddType text/cache-manifest .manifest 

risposta

2

Ho avuto un problema simile con un programma su cui stavo lavorando, il problema che ho avuto è stato la bandiera della cache nella chiamata ajax è stato inadempiente al vero

ho scoperto che quando ho aggiunto

cache : false 

alla mia ajax richiesta GET la richiesta raggiunge il server. (http://api.jquery.com/jQuery.ajax/)

10

Mi sono appena imbattuto in questo problema e ho dovuto aggiungere un carattere jolly alla sezione NETWORK del file manifest per consentire al browser di accedere alla rete per tutte le risorse non memorizzate nella cache.

NETWORK: 
* 
http://* 

A quanto pare, è necessario disporre di entrambe le voci jolly sopra per supportare tutti i browser.

Ho trovato anche appcachefacts.info una risorsa utile per comprendere questo e altri dettagli su appcache. Ti consiglio di leggere tutto fino in fondo prima di continuare la curva di apprendimento dell'appcache:

Nella sezione RETE sono elencati tutti gli URL che possono essere caricati su Internet. Se la tua applicazione include chiamate API, assicurati di elencarle qui. Nota che questo è un elenco di prefissi URL, quindi se tutte le tue chiamate di rete iniziano con http://example.com/api/, è tutto ciò che devi includere.

Se si desidera consentire l'accesso a URL arbitrari (script, fogli di stile, chiamate API, qualsiasi cosa), includere *, http: // * e https: // * in questa sezione. (Chrome e Safari rispetto l'*, Firefox ha bisogno di http: // * e https: // *.)

+1

Questo dovrebbe essere l'impostazione predefinita. HTML5 AppCache non sembra affatto implementato o specificato. Il browser dovrebbe rendere la pagina in cache e quindi scaricare una nuova pagina in background se c'è una connessione per aggiornare la cache ad ogni ricarica. Invece impone un tipo di modalità offline, anche quando l'utente ha una connessione. –

0

butto per questo problema di oggi. Ma nel mio caso il lavoro solo con i due passaggi:

  1. $.ajax({ url: "/myurl", cache: false, ...})
  2. Config sessione AppCache RETE con

Spero che sia utile per voi.

Problemi correlati