webForumDet fria alternativet

AJAX: Firefoxproblem med sparade värden

.NET

3 svar · 294 visningar · startad av Vide

Medlem sedan dec. 19998 577 inlägg
Frågan#1

Här har jag ett "litet" problem, i firefox2 så sparas tydligen en egen viewstate som används när man gör en reload på sidan.

På denna sidan kan du se effekten:
http://dev.webreport.se/AjaxToolkit/ajaxtoolkit.aspx

If FF2, tryck på den första knappen, den uppdaterar den andra knappen (och tvärt om). När du har klickat på båda knapparna, gör en reload (antingen via CTRL+R eller via menyn), tryck på en knapp igen och båda knapparna uppdateras (vilket koden inte skall göra).

Vad tror ni? Är det en effekt av hur FF2 hanterar sparade formvärden, eller är det en bug i ajax?

Notera att det fungerar i både IE6 och Opera9.

Här är koden:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ajaxtoolkit.aspx.cs" Inherits="test_ajaxtoolkit" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>Untitled Page</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
    <asp:ScriptManager runat="server" ID="SM" />
    <asp:UpdatePanel runat="server" ID="UP1">
      <ContentTemplate>
        <asp:Button runat="server" ID="btn1" Text="Click me" OnClick="btn1_click" />
      </ContentTemplate>
    </asp:UpdatePanel>
    <asp:UpdatePanel runat="server" ID="UP2">
      <ContentTemplate>
        <asp:Button runat="server" ID="btn2" Text="Click him" OnClick="btn2_click" />
      </ContentTemplate>
    </asp:UpdatePanel>
    </div>
    </form>
</body>
</html>
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;

public partial class test_ajaxtoolkit:System.Web.UI.Page
{
  protected void Page_Load( object sender, EventArgs e )
  {

  }

  protected void btn1_click( object sender, EventArgs e )
  {
    btn2.Text = "1: " + DateTime.Now.ToString();
  }

  protected void btn2_click( object sender, EventArgs e )
  {
    btn1.Text = "2: " + DateTime.Now.ToString();
  }
}
Medlem sedan juni 20014 421 inlägg
#2

Hmm, om man gör en tvingad omladdning av sidan CTRL+SHIFT+R uppstår inte problemet (den tömmer cachen samtidigt)...vad händer om du skickar med ett slumpat värde i en querystring eller liknande, så att den inte cachar.

Medlem sedan dec. 19998 577 inlägg
#3

colione skrev:

Hmm, om man gör en tvingad omladdning av sidan CTRL+SHIFT+R uppstår inte problemet (den tömmer cachen samtidigt)...vad händer om du skickar med ett slumpat värde i en querystring eller liknande, så att den inte cachar.

+shift fungerar bra, men man kan inte begära det av en användare... ;)

Om jag skall slumpa ett värde i querystring så krävs väl att jag går till sidan på nytt? Då tappar jag hela tänket med ajax.

Jag är mest intresserad av om denna effekt är någonting som är rätt eller fel... :)

Medlem sedan juni 20014 421 inlägg
#4

Har du provat att kasta in:

"Cache-Control", "no-cache"
"Pragma", "no-cache"

Tanken med att kasta in en querystring i ajax anropet (nu såg jag att du gjorde en post, men det borde fungera) är ju att sidan blir unik för webbläsaren.

Exempelvis: <form name="form1" method="post" action="ajaxtoolkit.aspx?seed=_slumpadenummer_" id="form1">

Sen behöver du ju inte själv använda dig innehållet i querystringen.

261 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)