Backbone: Wenn ich auf die Zurück-Schaltfläche klicke, wird Json rendert

Erstellt am 24. Sept. 2011  ·  10Kommentare  ·  Quelle: jashkenas/backbone

Ich habe eine Rails-App mit Backbone. Wenn ich zufällig auf die Schaltfläche "Zurück" oder "Vorne" klicke, sehe ich json.

invalid

Hilfreichster Kommentar

Vielen Dank!
Für mich

$.ajaxSetup
  cache: false

war genug

Alle 10 Kommentare

Können Sie weitere Informationen liefern? Viele Leute verwenden Backbone derzeit in der Produktion mit Rails und sehen nicht das gleiche Verhalten.

Bitte stellen Sie insbesondere einen Testfall bereit, damit wir das Problem genau reproduzieren können.

Ich erlebe das gleiche - immer wenn ich zu einer externen URL navigiere (die nicht von der Backbone-App verarbeitet wird) oder die Registerkarte schließe und dann zurückgehe oder die Registerkarte erneut öffne - sehe ich JSON. Ich bin mir nicht sicher, wie ich einen Testfall bereitstellen kann, aber ich kann Ihnen einige Details mitteilen, die Ihnen möglicherweise einen Hinweis darauf geben, was passiert.

Die Anwendung verwendet die Funktion _.delay, um die Modellsammlung mit dem Server zu synchronisieren (collection.fetch()). Der Server ist eine RoR-App, die sowohl App als auch JSON zur Synchronisierung auf derselben URL bereitstellt und Header verwendet, um zu entscheiden, ob die gesamte App oder nur ein JSON-Datenarray für Modelle bereitgestellt werden muss. könnte das das problem sein?

Meine andere Idee ist, dass der Browser die letzte Anfrage, die er an den Server gestellt hat, zwischenspeichert und sie beim Zurückdrücken einfach rendert. Wenn ich es schaffe, die App schnell zu verlassen (vor der ersten Synchronisierungsanfrage), wird beim Zurückgehen die App gerendert (nicht die JSON).

Habt ihr Ideen, wie man das überwinden kann?

Ich habe das Problem damit gelöst

$.ajaxSetup
  beforeSend: (xhr) ->
    xhr.setRequestHeader "Accept", "application/json"
  cache: false

Vielen Dank!
Für mich

$.ajaxSetup
  cache: false

war genug

+1

+1

Ich hatte das gleiche Problem in meiner RoR-App und Ihre Lösung hat bei mir funktioniert.

Danke @omenking @antonlitvinenko

Noch besser, fügen Sie Ihren URLs immer explizit die Erweiterung .json hinzu und lassen Sie den Browser sowohl json als auch Seiten-HTML zwischenspeichern (wenn es Ihnen nichts ausmacht), dh /users/1 + /users/1.json anstatt den Cache-Eintrag für dieselbe URL zu überschreiben. Sonst vermisst du die Vorteile des Browser-Cachings (was ist schön, oder? ;)) Nur meine 2c.

@Sija Sie haben Recht, aber ich habe zu explizitem .json gewechselt und als ich den Test durchgeführt habe, wurde das gleiche Problem beim Überschreiben der Seite mit json empfangen. Hast du eine Ahnung was ich falsch mache? hehe
tks

+1

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen