Domanda

Sto per iniziare una abbastanza Ajax pesanti funzione nel mio applicazioni dell'azienda.Che cosa ho bisogno di fare è creare un metodo di callback ogni pochi minuti un utente sulla pagina.

  • Non ho bisogno di fare qualsiasi DOM aggiornamenti prima, dopo, o durante il callback.
  • Non ho bisogno di qualsiasi informazione, pagina, proprio da un cookie del sito, che deve sempre essere inviato con le richieste, comunque, e un valore di ID.

Quello che sono curioso di sapere, è se c'è pulita e semplice per fare un JavaScript Ajax richiamata per un ASP.NET pagina senza postare il resto delle informazioni sulla pagina.Mi piacerebbe non deve fare questo, se è possibile.

Ho davvero voglia di essere in grado di chiamare un singolo metodo della pagina, nient'altro.

Inoltre, mi sono limitato a ASP.NET 2.0, quindi non posso utilizzare uno dei nuovi framework 3.5 ASP AJAX caratteristiche, anche se posso usare l'ASP AJAX extensions per il framework 2.0.

AGGIORNAMENTO
Ho deciso di accettare DanP's la risposta sembra essere esattamente quello che sto cercando.Il nostro sito utilizza jQuery per alcune cose, quindi io probabilmente utilizzare jQuery per effettuare le richieste dato che nella mia esperienza sembra di fare molto meglio di ASP AJAX framework fa.

Cosa pensi sarebbe il miglior metodo di trasferimento dei dati IHttpHandler?Devo aggiungere le variabili stringa di query o POST i dati devo inviare?

L'unica cosa che credo di dover inviare un unico ID, ma non riesco a decidere quale sia il miglior metodo è quello di inviare l'ID e hanno IHttpHandler gestire.Mi piacerebbe venire con una soluzione che consentisse di evitare che una persona con competenze informatiche di base accidentalmente o intenzionalmente accedere direttamente alla pagina, o ripetendo le richieste.È possibile questo?

È stato utile?

Soluzione

Se non si desidera creare una pagina vuota, che si potrebbe chiamare un IHttpHandler (ashx) file:

public class RSSHandler : IHttpHandler
    {
        public void ProcessRequest (HttpContext context)
        {   
            context.Response.ContentType = "text/xml";

            string sXml = BuildXMLString(); //not showing this function, 
            //but it creates the XML string
            context.Response.Write( sXml );
        }

        public bool IsReusable
        {
            get { return true; }
        }

    }

Altri suggerimenti

Si dovrebbe usare ASP.Net Richiamate, che sono stati introdotti in Asp.Net 2.0.Ecco un articolo che dovrebbe ottenere è impostato per andare:

L'implementazione di Client Callback a livello di programmazione Senza Postback in ASP.NET Pagine Web

Edit:Anche a guardare questo:ICallback & JSON a Base di JavaScript Serializzazione

Cosa pensi sarebbe il miglior metodo di trasferimento dei dati IHttpHandler?Devo aggiunto le variabili stringa di query o POST i dati devo inviare?L'unica cosa che credo di dover inviare un unico ID, ma non riesco a decidere quale sia il miglior metodo è quello di inviare l'ID e hanno IHttpHandler gestire.Mi piacerebbe venire con una soluzione che consentisse di evitare che una persona con competenze informatiche di base accidentalmente o intenzionalmente accedere direttamente alla pagina

Considerando il callback è sepolto nel codice del client, ci vorrebbe qualcuno con la medesima determinazione per ottenere la querystring o la richiesta POST.CIOÈ, se hanno firebug, il vostro ugualmente avvitato.

Quindi, in questo caso, fare tutto ciò che è più facile per voi (Suggerimento:Vorrei solo utilizzare la querystring).

Per gestire la ripetizione di richieste di accesso diretto, mi piacerebbe generare una chiave che viene inviato con ogni richiesta.Forse un hash dell'ora corrente (Fuzzy, mi piacerebbe andare a minuti, ma non sono secondi a causa della latenza di rete) + IP del client.

Quindi in HTTPHandler, eseguire lo stesso hash, e funzionerà solo se corrispondono.

Non si è solo limitato a ASP.NET AJAX ma si può usare qualsiasi 3rd party biblioteca come jQuery, YUI ecc per fare la stessa cosa.È possibile effettuare una richiesta per una pagina vuota sul tuo sito che dovrebbe riportare le intestazioni che contengono i biscotti.

Il mio voto è con l'HTTPHandler suggerimento, come bene.Utilizzo spesso questo.Perché non richiamare un'istanza della classe page, è molto leggero.

Tutti i ASP.NET framework AJAX, trucchi effettivamente creare un'istanza e creare l'intera pagina sul backend per chiamata, in modo che siano enormi risorse maiali.

Quindi, il mio stile tipico di XmlHttpRequest indietro per un HttpHandler.

Dal momento che si sta utilizzando solo ASP.NET 2.0 mi sento di raccomandare AjaxPro sarà che creano .file ashx.Tutto quello che dovete fare è tirare la AjaxPro.dll nel tuo sito web.Ho sviluppato un applicazione con AjaxPro e trovato che ha funzionato molto bene.Utilizza la serializzazione per passare gli oggetti avanti e indietro.

Questo è solo un esempio su come si può utilizzare.

namespace MyDemo
{
  public class Default
  {
    protected void Page_Load(object sender, EventArgs e)
    {
      AjaxPro.Utility.RegisterTypeForAjax(typeof(Default));
    }

    [AjaxPro.AjaxMethod]
    public DateTime GetServerTime()
    {
      return DateTime.Now;
    }
  }
}

Per chiamare tramite JavaScript è molto semplice

function getServerTime()
{
  MyDemo._Default.GetServerTime(getServerTime_callback);  // asynchronous call
}

// This method will be called after the method has been executed
// and the result has been sent to the client.

function getServerTime_callback(res)
{
  alert(res.value);
}

MODIFICA

Devi aggiungere anche

Per la config.AjaxPro anche per chi lavora fianco a fianco con APS.NET Ajax e si può passare oggetti C# dal Client al Server, se la classe è contrassegnato come [Serializable]

Proprio per offrire una prospettiva diversa, si potrebbe anche usare una PageMethod sulla pagina principale.Dave Ward è un bel post che illustra questo.Essenzialmente si utilizza jQuery ajax post per richiamare il metodo, come illustrato nella Dave post di:

$.ajax({
    type: "POST",
    url: "Default.aspx/GetFeedburnerItems",
    // Pass the "Count" parameter, via JSON object.
    data: "{'Count':'7'}",
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function(msg) {
      BuildTable(msg.d);
    }
  });

Nessun bisogno di Asp.Net Ajax extensions a tutti.

È inoltre possibile utilizzare Webmethod che sono incorporati in asp.net libreria ajax.Basta creare un metodo statico sulla pagina code-behind e chiamata dal tuo Ajax.

C'è un bel esempio di come farlo qui

Si dovrebbe utilizzare un servizio web.asmx).Con Microsoft ASP.NET AJAX si può anche auto-generare stub.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top