2014-07-23 4 views
0

Je construis un site web où je tire et pousse des fichiers json contenant des informations. Je sais que je devrais utiliser une base de données dans l'intérêt de la vitesse, mais je n'ai pas encore les connaissances pour le faire. Quoi qu'il en soit, chaque seconde la page va tirer un nouveau fichier JSON avec un appel JQuery.getJSON et l'ajouter à un élément, comme suit:

function update(){ 
    $.getJSON(path, function(data){ 
     $("#entryContainer").empty().append(data.entry); 
    }); 
    window.setTimeout(update, 1000); 
} 

J'utilise un appel ajax à un script PHP pour écrire sur l'ancien JSON avec le même chemin. Le PHP s'exécute correctement:

<?php 
    $data = $_POST['data']; 
    $path = $_POST['path']; 

    $file = fopen($path, 'w+'); 
    fwrite($file, $data); 
    fclose($file); 
?> 

La plupart du temps, cette configuration fonctionne parfaitement. Bien que la première fois que j'essaye de pousser une mise à jour au json, le $ .getJSON ne tire pas réellement un dossier mis à jour. Après avoir actualisé la page, la mise à jour s'affichera et le $ .getJSON sera réellement réactif.

Pourquoi cela se produit-il? Le JSON est-il en cache? Recharger la page sur une exécution réussie n'est pas une option.

Merci

+0

avez-vous essayé de désactiver le cache: '$ .ajaxSetup ({cache: false});' –

Répondre

0

par des caches par défaut getJSON dans jQuery. Vous devriez vraiment ne pas définir d'en-têtes de cache sur le serveur et/ou faire l'appel Ajax sans la méthode d'assistance.

$.ajax({ 
    dataType: "json", 
    url: path, 
    cache: false, //do not cache 
    success: function(data){ 
     $("#entryContainer").empty().append(data.entry); 
    } 
}); 
Questions connexes