6
votes

Bouton arrière $ .Getjson montrant les données de retour JSON et non la page

J'ai un peu de problème avec mon site. J'ai une page qui héberge une carte Google. Cependant, la carte ne se présente pas tant que l'utilisateur clique sur un bouton. Il appelle ensuite $ .getjson pour obtenir les adresses que j'ai besoin de montrer sur la carte ... xxx

Tout fonctionne bien. Toutefois, si l'utilisateur passe ensuite à une page différente, puis clique sur le bouton Précédent, ils obtiennent les données de l'appel $ .gejson affichés, pas la page elle-même.

C'est comme si l'appel à obtenir les adresses est devenu une partie de l'historique de navigation. Si l'utilisateur frappe une rafraîchissement lorsque les données apparaissent, la page complète s'affiche alors.

Quelqu'un peut-il me dire comment arrêter cela de se produire.

J'utilise le googlemap dans une ASP .NET MVC Site.

Merci


3 commentaires

Est-ce que vous modifiez l'historique du navigateur?


L'URL est-elle la même que la page? (c.-à-d. Changement entre HTML et JSON en fonction de si la demande est jugée XHR)


Bonjour, merci de vos réponses. Je ne modifie pas l'historique non, et oui, l'URL est la même, mais je vérifie si c'est une demande Ajax dans le code serveur de Teh afin que je sache, je sais que les données JSON et non la page.


3 Réponses :


10
votes

Je l'ai résolu en incluant le code ci-dessous juste avant la fonction $ .ajax

$. ajaxsetup ({cache: faux});

Ça marche! Essayez-le


1 commentaires

Cet appel change le comportement de tous les appels vers AJAX sur la page. Cela pourrait conduire à un comportement très déroutant si vous n'êtes pas au courant.



4
votes

Cela a fonctionné pour moi et joue bien avec les contrôleurs de rails: xxx

comme bonus, je peux garder le cache.

Je suis sûr que cela fonctionne Pour la même raison que cache: FAUX fonctionne - Ajoutez un paramètre à l'URL afin que Chrome ne soit pas confondu par l'origine. Dans ce cas, je me cache les résultats, ce qui est agréable.


0 commentaires

3
votes

Ceci est en fait Un bogue en chrome . Je l'ai réparé en ajoutant quelque chose à l'URL de l'appel Ajax afin qu'il soit différent de l'URL de la page (par exemple, '& ajax = true').

Donc, dans votre cas, il ressemblerait à: P>

$.getJSON(theurl + '&ajax=true', function(json) {
  ...
}


1 commentaires

WheeyLs Réponse a fonctionné pour moi Stackoverflow.com/a/12427812/1852292