Zuerst mein Code
%Vor%Ich habe eine Reihe von Schaltflächen mit Code, die einige Abstimmungsergebnisse von einer ASP.Net MVC-Controller-Aktion bringen.
Dies funktioniert gut, wenn Sie zum ersten Mal auf die Schaltfläche klicken, aber wenn erneut geklickt wird, passiert nichts. Nichts erreicht den Server.
Ich teste auf FireFox.
Was läuft falsch? Eine Art seltsames Caching? Da die Anfrage das zweite Mal nie den Controller erreicht, scheint das JavaScript in Ordnung zu sein, aber es gibt immer die alten Werte zurück.
Klingt wie ein Browser-Cache-Problem (wenn ich mir ziemlich sicher bin, dass das mit IE passiert), möchten Sie vielleicht $. ajax und setzen Sie die Cache-Option auf" false ", da sie standardmäßig nur für dataType script
und jsonp
: false ist:
Alternativ können Sie diese Option global für alle jQuery Ajax-Funktionen festlegen, indem Sie vor der Verwendung $ .ajaxSetup verwenden $ .getJSON:
%Vor%Bearbeiten: Sie können eine POST-Anfrage machen, die JSON wie folgt zurückgibt:
%Vor%Wenn Sie viele postJSON -Anfragen durchführen möchten, können Sie eine eigene Funktion erstellen:
%Vor%Und Sie können es genauso verwenden wie $ .getJSON
Zuerst mein Code
%Vor%Ich habe eine Reihe von Schaltflächen mit Code, die einige Abstimmungsergebnisse von einer ASP.Net MVC-Controller-Aktion bringen.
Dies funktioniert gut, wenn Sie zum ersten Mal auf die Schaltfläche klicken, aber wenn erneut geklickt wird, passiert nichts. Nichts erreicht den Server.
Ich teste auf FireFox.
Was läuft falsch? Eine Art seltsames Caching? Da die Anfrage das zweite Mal nie den Controller erreicht, scheint das JavaScript in Ordnung zu sein, aber es gibt immer die alten Werte zurück.
Klingt wie ein Browser-Cache-Problem (wenn ich mir ziemlich sicher bin, dass das mit IE passiert), möchten Sie vielleicht $. ajax und setzen Sie die Cache-Option auf" false ", da sie standardmäßig nur für dataType %code% und %code% : false ist:
%Vor%Alternativ können Sie diese Option global für alle jQuery Ajax-Funktionen festlegen, indem Sie vor der Verwendung $ .ajaxSetup verwenden $ .getJSON:
%Vor%Bearbeiten: Sie können eine POST-Anfrage machen, die JSON wie folgt zurückgibt:
%Vor%Wenn Sie viele postJSON -Anfragen durchführen möchten, können Sie eine eigene Funktion erstellen:
%Vor%Und Sie können es genauso verwenden wie $ .getJSON
Sie können dasselbe auch mit der GET-Anfrage machen, fügen Sie einfach einen Zeitstempel am Ende der Anfrage hinzu, siehe zum Beispiel die folgende Beispielanfrage
Ссылка _timestamp = 1234421352
Auf diese Weise speichert der Browser Ihre Anfragen niemals, da sich die URL bei jedem Anruf ändert. Sie können den Zeitstempel von Javascript leicht erhalten. Außerdem müssen Sie diesen Zeitstempel nicht auf Ihrer Serverseite behandeln, aber dies liegt in Ihrem Ermessen.
Ja, %code% löst das Problem! Meine Anwendung ist mit MVC 2. Der Code ist wie folgt:
%Vor% Ja, $.ajaxSetup({ cache: false });
löst das Problem! Meine Anwendung ist mit MVC 2. Der Code ist wie folgt:
Sie können dasselbe auch mit der GET-Anfrage machen, fügen Sie einfach einen Zeitstempel am Ende der Anfrage hinzu, siehe zum Beispiel die folgende Beispielanfrage
Ссылка _timestamp = 1234421352
Auf diese Weise speichert der Browser Ihre Anfragen niemals, da sich die URL bei jedem Anruf ändert. Sie können den Zeitstempel von Javascript leicht erhalten. Außerdem müssen Sie diesen Zeitstempel nicht auf Ihrer Serverseite behandeln, aber dies liegt in Ihrem Ermessen.
Tags und Links asp.net-mvc javascript jquery json