Brains Engineering - Il Blog

Asp.Net Ajax Networking - Le basi

scritto da guru 09/04/2008 11.55.00

Una delle caratteristiche chiave di Ajax è quella di poter effettuare chiamate asincrone a servizi Web direttamente dal codice javascript. Asp.Net Ajax, oltre a fornire le classi per gestire le richieste Web ed elaborare le risposte, garantisce dei metodi che astraggono dalle diverse implementazioni supportate dai diversi browser.

La classe Ajax che permette di gestire richieste HTTP in maniera indipendente dal client è WebRequest().

Nell'esempio successivo notiamo le seguenti cose:

- Il metodo WebRequest permette di specificare il VERB (POST, GET), i parametri della chiamata (set_body), il timeout.

- Un'altra cosa che si puo' dichiarare con Webrequest e' lo userContext. Con esso possiamo passare un'informazione aggiuntiva che specifica il motivo della richiesta HTTP (ovviamente possiamo anche leggerlo quando riceviamo la risposta).

- Per motivi di sicurezza, il post viene fatto ad un proxy locale alla macchina

- Possiamo agganciare un handler che gestisce la risposta

- Nell'handler, possiamo utilizzare un metodo astratto (cross-browser) che ci indica se c'e' effettivamente una risposta disponibile

- Una volta ricevuta la risposta, il risultato viene visualizzato dentro un DIV

- Il posto viene scatenato cliccando su un Asp:Button (il post back e' disabilitato grazie a return false).

 

<%@ Page Language="C#" %>

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

<script runat="server">

protected void Page_Load(object sender, EventArgs e)

{

if (Page.IsPostBack)

{

Response.Write("Postback");

}

else

{

Response.Write("First Load");

}

}

</script>

<html xmlns="http://www.w3.org/1999/xhtml" >

<head id="Head1" runat="server">

<title>Untitled Page</title>

 

<script type="text/javascript">

 

var xmlhttp;

 

function makePOST(uri)

{

var webRequest = new Sys.Net.WebRequest();

webRequest.set_url(uri);

 

webRequest.set_userContext('motivo specifico del post');

webRequest.set_httpVerb('POST');

webRequest.set_body('content=123');

//webRequest.set_timeout(10000);

webRequest.add_completed(completedHandler);

webRequest.invoke();

}

function completedHandler(result, eventArgs)

{

if (result.get_timedOut())

{

alert('timed out');

}

if (result.get_responseAvailable())

{

var userContext = result.get_webRequest().get_userContext();

var pageRes = result.get_responseData();

$get('placeholder1').innerHTML = userContext;

$get('placeholder2').innerHTML = pageRes;

$get('placeholder3').innerText = "test";

}

}

 

</script>

 

</head>

<body>

<form id="form1" runat="server">

<asp:ScriptManager ID="ScriptManager1" runat="server">

</asp:ScriptManager>

 

<asp:Button ID="Button1" OnClientClick="makePOST('localProxyOnlyWebPart.aspx');return false;" runat="server" Text="Button" />

<div id="placeholder1"></div>

<hr />

<div id="placeholder2"></div>

<hr />

<div id="placeholder3"></div>

</form>

</body>

</html>

Correntemente valutato 3.0 da 5 utenti

  • Currently 3/5 Stars.
  • 1
  • 2
  • 3
  • 4
  • 5

Tags: , , , , , ,

Categorie: ASP.Net Ajax

Post correlati

Commenti

22/06/2011 11.56.03

online casino

idea molto interessante. piuttosto sorprendente. Grazie per le informazioni fornite.

online casino it

Aggiungi commento


(Visualizza la tua icona Gravatar)  

  Country flag

[b][/b] - [i][/i] - [u][/u]- [quote][/quote]



Anteprima

20/05/2012 1.47.16

Cerca



Calendario

<<  maggio 2012  >>
lumamegivesado
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

© Copyright 2012

Sign in