Introduzione ad AJAX



Documenti analoghi
INTRODUZIONE AI PRINCIPI DELLO SVILUPPO DI APPLICAZIONI WEB INTERATTIVE

AJAX. Goy - a.a. 2006/2007 Servizi Web 1. Cos'è il Web 2.0

Realizzare una piccola chat in php senza database

sito web sito Internet

Esercizi di JavaScript

La tecnica AJAX. Progettazione di Sistemi Interattivi. Implementazione di sistemi interattivi web-based (seconda parte) Esempio: Google Maps

Cookie e Webstorage. Vediamo ora i metodi dell oggetto localstorage. Per memorizzare un valore si utilizza il metodo setitem:

Siti interattivi e dinamici. in poche pagine

Laboratorio Progettazione Web PHP e FORMs HTML. Andrea Marchetti IIT-CNR andrea.marchetti@iit.cnr.ita 2013/2014

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

Corso di PHP. Prerequisiti. 6.1 PHP e il web 1. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Esercitazione 8. Basi di dati e web

Corso di Applicazioni Telematiche

SOMMARIO... 3 INTRODUZIONE...

Registratori di Cassa

Corso di PHP. Prerequisiti. 1 - Introduzione

Flavio De Paoli

Il Web-Service SDMX dell ISTAT

Ajax. Introdotta da Microsoft nel 1998 è stata standardizzata e adottata da tutti i browser moderni.

Il Protocollo HTTP e la programmazione di estensioni Web

Lezione II: Web server e ambiente di lavoro

Ajax è il nome nuovo introdotto dal web 2.0, ma non si tratta di un nuovo linguaggio di. Javascript and XML

Scaletta. Estensioni UML per il Web. Applicazioni web - 2. Applicazioni web. WAE: Web Application Extension for UML. «Client page»

flusso delle informazioni... 2 password... 3 password/ inserimento di una nuova richiesta... 4 le condizioni di vendita... 6

Esempio di esecuzione di una pagina JSP: Il client chiede la pagina: sdfonline.unimc.it/info/modulo.jsp;

AJAX e altre applicazioni di Javascript. Luca Fabbri

Applicazioni web. Parte 8 AJAX

appunti delle lezioni Architetture client/server: applicazioni client

Protocolli applicativi: FTP

Database e reti. Piero Gallo Pasquale Sirsi

WEBGIS 1.0. Guida per l utente

Il Web-Service SDMX dell ISTAT

MOBS Flussi informativi sanitari regionali

Guida per l aggiornamento del software del dispositivo USB

A destra è delimitata dalla barra di scorrimento verticale, mentre in basso troviamo una riga complessa.

Fon.Coop Sistema di Gestione dei Piani di Formazione. Manuale per la Registrazione utente nel Nuovo

Introduzione Benvenuto nella guida del sito ecommerce di

Come funziona internet

File, Modifica, Visualizza, Strumenti, Messaggio

La gestione documentale con il programma Filenet ed il suo utilizzo tramite la tecnologia.net. di Emanuele Mattei (emanuele.mattei[at] .

GUIDA UTENTE PRIMA NOTA SEMPLICE

Introduzione Benvenuto nella guida del sito ecommerce di

Direzione Centrale per le Politiche dell Immigrazione e dell Asilo

Do-Dots Protocollo di comunicazione

Gara con presentazione di offerta valutata secondo il criterio dell offerta economicamente più vantaggiosa (gara in due tempi)

Progettazione Web Applicazioni client-server

Lezione 1 Introduzione

Test in automatico di programmi Android

Luca Mari, Sistemi informativi applicati (reti di calcolatori) appunti delle lezioni. Architetture client/server: applicazioni client

19. LA PROGRAMMAZIONE LATO SERVER

Sistema Gestionale FIPRO. Dott. Enea Belloni Ing. Andrea Montagnani

I MODULI Q.A.T. PANORAMICA. La soluzione modulare di gestione del Sistema Qualità Aziendale

Dispensa di database Access

Programmazione Web. Introduzione

CONTENUTI 1. INTRODUZIONE CONCETTI BASICI SU EQUINOX CMS XPRESS ACCESSO A EQUINOX CMS XPRESS PAGINA D INIZIO...

1. CODICE DI ATTIVAZIONE 2. TIPOLOGIE GARANZIE 3. CONFIGURAZIONE NUMERI DI SERIE 4. DOCUMENTI

Il software di gestione immobiliare più facile da usare. Modulo Web v5.2.

Esercitazione n. 10: HTML e primo sito web

MANUALE B2B PER GLI AGENTI

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database

AJAX. Riccardo Rosati

Al giorno d oggi, i sistemi per la gestione di database

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Veneto Lavoro via Ca' Marcello 67/b, Venezia-Mestre tel.: 041/

MANUALE PORTALE UTENTE IMPRENDITORE

Manuale Operativo per l utilizzo della piattaforma E-Learning@AQ. Versione 1.1

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

MANUALE UTENTE Fiscali Free

1. Manuale d uso per l utilizzo della WebMail PEC e del client di posta tradizionale

Come si può vedere, la regola è stata fatta in modo da spostare tutti i messaggi di Spam nella cartella del cestino.

2008 Corso Base Programmazione Web in ambiente Linux

Manuale d uso Software di parcellazione per commercialisti Ver [05/01/2015]

InitZero s.r.l. Via P. Calamandrei, Arezzo

OSSIF WEB. Manuale query builder

1 CARICAMENTO LOTTI ED ESISTENZE AD INIZIO ESERCIZIO

Indice PARTE PRIMA L INIZIO 1

SOMMarIO INIZIARE. iii. Adobe dreamweaver CS5 ClASSroom in A book

Architettura del. Sintesi dei livelli di rete. Livelli di trasporto e inferiori (Livelli 1-4)

File Server Resource Manager (FSRM)

ANTISPAM PLAYNET (nuova Piattaforma) In questa piccola guida vogliamo mostrarvi come creare regole di BlackListe e Whitelist per

Come modificare la propria Home Page e gli elementi correlati

Progetto ittorario Anno scol

Access. Microsoft Access. Aprire Access. Aprire Access. Aprire un database. Creare un nuovo database

M:\Manuali\VARIE\GENERAZIONE REPORT PARAMETRICI.doc GENERAZIONE REPORT PARAMETRICI

Introduzione al Web. dott. Andrea Mazzini

Servizio di Posta elettronica Certificata (PEC)

Guida Operativa Programma Pestalozzi

AJAX. Riccardo Rosati

Il Web Server e il protocollo HTTP

WEB Conference, mini howto

Certificazioni Procedura di scaricamento

Progetto: Servizio location based per la ricerca di punti di interesse

ImporterONE Export Plugin Magento

POS VIRTUALE INTERNET. SETEFI S.p.A

SPRING SQ COMUNICAZIONE OPERAZIONI IVA NON INFERIORI A 3000 EURO PER L ANNO 2011

Servizio e-business eni Manuale d uso del catalogo elettronico Manuale utenti V 1.0 Giugno 2015

MANUALE PER CONSULTARE LA RASSEGNA STAMPA VIA WEB

MANUALE OPERATIVO PER IL CARICAMENTO DEI CONTENUTI DELLE AZIENDE ASSOCIATE NELLA SEZIONE A LORO RISERVATA

I Codici Documento consentono di classificare le informazioni e di organizzare in modo logico l archiviazione dei file.

Transcript:

Introduzione ad AJAX Asynchronous Javascript And XML (PWLS 6.9, 6.10) Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 1

Limitazioni delle applicazioni web tradizionali I limiti percepiti dall'utente sono: lentezza nel caricamento delle pagine; necessità di ricaricare l'intera pagina ad ogni interazione. Tali limiti derivano direttamente dall'http e dalla modalità di interazione client/server classica: il browser (client) invia una richiesta (HTTP); il web server riceve la richiesta ed elabora una risposta; la risposta viene inviata al client che la visualizza/gestisce. Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 2

Round-trip time (RTT) RTT è il tempo richiesto per l'invio di una richiesta da parte del client e la ricezione della risposta (escluso il tempo di trasferimento dei dati). Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 3

Rich Internet Application (RIA) Una Rich Internet Application è un'applicazione web che si avvicina (dal punto di vista della qualità dell'interazione) ad un'applicazione standard di tipo desktop. Si cerca di spostare gli aspetti maggiormente interattivi sul lato client. Adobe Flash, Java FX e Microsoft Silverlight sono esempi di piattaforme per lo sviluppo di applicazioni di questo tipo. Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 4

AJAX (1) AJAX significa Asynchronous Javascript And XML. Non è una tecnologia, ma un modo di utilizzare assieme una serie di tecniche di programmazione lato client e lato server per ottenere applicazioni web piu interattive. Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 5

HTML "tradizionale" AJAX (2) ad ogni azione dell utente corrisponde una richiesta al server, che provoca la spedizione di un intera pagina HTML verso il browser con AJAX è possibile aggiornare parti della pagina senza che sia necessario ricaricarla completamente Esempi: http://www.google.com/webhp?complete=1&hl=en http://maps.google.com Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 6

AJAX (3) Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 7

AJAX (4) Insieme di tecnologie (non specificamente server-side, ma prevalentemente client -side): XHTML e CSS standard; Visualizzazione e interazione dinamica tramite Document Object Model; Scambio dati e manipolazione basate su XML e XSLT; Recupero asincrono di dati tramite l oggetto XMLHttpRequest; Il tutto connesso tramite Javascript Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 8

AJAX (5) Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 9

AJAX (6) AJAX è utile per creare interfacce "ricche", che vadano oltre l'attuale modello per il web. Quindi applicazioni web e non semplici pagine informative. Problemi? Accessibilità: può degradare. Explorer 5.5 e 6 implementano XMLHttpRequest tramite ActiveX. Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 10

Altri limiti/problemi relativi ad AJAX AJAX non è la panacea per tutti i mali; infatti presenta anche qualche svantaggio: non rispetta alcune delle funzionalità tipiche di un browser (come il tasto back per la navigazione all indietro, o la possibilità di salvare dei bookmark) problemi di sicurezza, i browser al momento non gestiscono tutti allo stesso modo questa tecnologia; quindi è necessario porre attenzione agli aspetti specifici dei singoli browser, rendendo così piu complessa la programmazione. Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 11

XMLHttpRequest: attributi onreadystatechange: contiene la funzione che gestisce l evento lanciato, ad ogni cambiamento di stato. readystate: stato corrente dell'istanza di XMLHttpRequest: 0 = non inizializzato, 1 = aperto, 2 = richiesta inviata, 3 = risposta in ricezione e 4 = risposta ricevuta. responsetext: risposta del server in formato stringa responsexml: risposta del server in XML status: codice HTTP restituito dal server per esempio 404 per "Not Found" e 200 per "OK". Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 12

XMLHttpRequest: (alcuni) metodi setrequestheader(chiave, valore): aggiunge uno header alla richiesta. open(metodo, URL, async): prepara una richiesta HTTP: metodo: GET o POST (o PUT); URL relativo o assoluto; async: true, lo script prosegue l elaborazione senza aspettare; false aspetta. send(content): invia la richiesta. abort(): cancella la richiesta in atto. getallresponseheaders(): restituisce sotto forma di stringa tutti gli header HTTP ricevuti dal server. Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 13

Attributi di XHTML correlati a Javascript Esempio (controlla valori immessi, prima della spedizione): <form action="script.php" method="post" onsubmit="check()" /> Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 14

Esercizio Svilupperemo una pagina web con tre campi di input in cui inseriremo tre numeri per i valori di R,G,B con cui impostare il colore di sfondo della pagina, Il tutto asincronamente (senza ricaricare). (NB: si può fare tutto solo con Javascript! Ma è l esercizio più semplice) Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 15

Struttura Una pagina web dotata di alcune funzioni lato client scritte in Javascript: dopo avere scritto la stringa nei campi di input, una funzione invia i valori alla parte lato server e aggiorna dinamicamente la pagina alla ricezione del risultato, senza ricaricare la pagina completa; due parti: il codice XHTML e quello Javascript. Uno script PHP: riceve i valori R G B via GET dalla parte lato client, costruisce la stringa rgb(r,g,b) e la invia indietro alla pagina web. Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 16

La parte XHTML (colori1.php) <body id="corpo"> <h1>colori RGB in Ajax</h1> R: <input type="text" name="r" id="r" value="255" size="3" onblur="spedisci(document.getelementbyid('r').value,document.get ElementById('g').value,document.getElementById('b').value);"/> G: <input type="text" name="g" id="g" value="255" size="3" /> B: <input type="text" name="b" id="b" value="255" size="3" /> <input type="button" value="cambia sfondo" onclick="spedisci(document.getelementbyid('r').value,document.ge telementbyid('g').value,document.getelementbyid('b').value);" /> <p id="descrizione"> - </p> </body> </html> Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 17

La parte Javascript/1 <html> <head> <title>colori RGB</title> <script type="text/javascript"> function spedisci(r,g,b) { document.getelementbyid("descrizione").innerhtm L = "---attendi...----"; server = 'ajaxserver1.php?r=' + R + '&G=' + G + '&B=' + B; richiesta = new XMLHttpRequest(); richiesta.onreadystatechange = updateasincrono; richiesta.open("get", server, true); richiesta.send(null); } Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 18

La parte Javascript/2 function updateasincrono() { if ((richiesta.readystate == 4) && (richiesta.status == 200)) { esito=richiesta.responsetext; document.getelementbyid("corpo").style.background =esito; document.getelementbyid("descrizione").innerhtml =esito; } } </script> </head> Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 19

Lo script lato server (ajaxserver1.php) <? function ImpostaSfondo($r, $g, $b) { $risposta = "rgb($r,$g,$b)"; return $risposta; } echo ImpostaSfondo($_GET['R'],$_GET['G'], $_GET['B']);?> Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 20

Commenti spedisci(r,g,b): invia la richiesta asincrona, all url ajaserver1.php, con query uguale a R=r&G=g&B=b stabilendo che la gestione della risposta verrà fatta dalla funzione updateasincrono() updateasincrono(): quando lo stato della richiesta è 4 (=risposta ricevuta) e l esito è 200 (=OK), tramite DOM modifica il colore di sfondo del corpo e il contenuto dell elemento che ha id=descrizione In questa versione semplice, lo script lato server si limita ad emettere una stringa, che quindi non è necessario codificare in XML Se dovesse restituire piu dati, potremmo usare XML, JSON, o anche XHTML direttamente! Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 21

Sicurezza Same Origin Policy: https://developer.mozilla.org/en/same_origin_policy_for_javascript Cosa vuol dire? Uno script Javascript non può accedere a dati/risorse al di fuori dell'origine della pagina in cui risiede. L'origine è definita da: protocollo, host e (se specificato) numero di porta. Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 22

Un esempio piu complesso Costruiamo un applicazione AJAX che, oltre a recuperare la risposta dal web server, invii anche dei dati (query). La pagina PHP a cui sarà indirizzata la richiesta dovrà tener conto della query nella generazione della risposta. In particolare vogliamo inviare al client soltanto le righe di un file di testo (sul server) che contengano la stringa inviata nella query. Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 23

Dettagli dell applicazione Il file di testo sul server si chiamerà lista_computer.txt e conterrà in ogni riga il nome di un computer. La pagina PHP computer.php accetta in input come parametro una stringa che utilizza come filtro per produrre in output soltanto le righe del file lista_computer.txt che la contengono. La pagina statica AjaxComputerList.html conterrà il codice Javascript responsabile dell inoltro della richiesta al server web e della visualizzazione della risposta. Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 24

Il file lista_computer.txt Dell Optiplex Dell Inspiron Dell Dimension imac Sun Ultra 1 Gateway laptop... Gateway 800 Palm VII Handspring Visor Atari Beowulf Cluster II Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 25

computer.php <?php if(!isset($_request['query'])) $query=""; else $query=$_request['query']; $filename='lista_computer.txt'; $f = fopen($filename, "r"); $contenuto = fread($f, filesize($filename)); fclose($f); $computer = explode("\n",$contenuto); $risultato=""; for($i=0; $i<count($computer); $i++) if(!(stripos($computer[$i],$query)===false)) $risultato=$risultato. $computer[$i]. "<br>"; echo $risultato;?> Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 26

La pagina statica <html> <head> <title> </title> <script type="text/javascript"><!--... //--></script> </head> <body> <form name="mioform"> Inserisci una stringa: <input type="text" name="query" size="10" onblur="javascript:recuperalista();"><br> <span id="risultato"></span> </form> </body> </html> Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 27

Le funzioni Javascript utilizzate In modo analogo all esempio precedente vi sono due funzioni nel codice Javascript: RecuperaLista(): funzione richiamata dall evento di perdita del focus della casella di testo della pagina (elemento <input>); serve a generare la richiesta dopo aver inizializzato un oggetto XMLHttpRequest; UpdateAsincrono(): funzione avente lo scopo di attendere la risposta dal server, aggiornando la pagina con la visualizzazione del risultato. Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 28

RecuperaLista function RecuperaLista() { } document.getelementbyid("risultato").innerhtml = " ricerca in corso "; var valore = window.document.mioform.query.value; richiesta = new XMLHttpRequest(); richiesta.onreadystatechange = UpdateAsincrono; richiesta.open("get","computer.php?query="+valore, true); richiesta.send(null); Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 29

UpdateAsincrono function UpdateAsincrono() { } if((richiesta.readystate == 4) && (richiesta.status == 200)) { var esito = richiesta.responsetext; document.getelementbyid("risultato").innerhtml = esito; } Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 30

Esempio di esecuzione Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 31

In Explorer 6 L oggetto XMLHttpRequest è realizzato con un ActiveX, quindi: if (window.xmlhttprequest) { // Mozilla, Safari, richiesta = new XMLHttpRequest(); } else if (window.activexobject) { // IE richiesta = new ActiveXObject( Msxml2.XMLHTTP ); //IE6 } Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 32

Una pagina di test (I) <html> <head>... <title> </title> <script type="text/javascript"><!-- function ajaxfunction() { var xmlhttp; var tipobrowser="firefox, Opera 8.0+, Safari, Internet Explorer 7.0+"; try { // Firefox, Opera 8.0+, Safari, Internet Explorer 7.0 } xmlhttp=new XMLHttpRequest(); catch(e) { Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 33

Una pagina di test (II) } tipobrowser="internet Explorer 6.0+"; try { } // Internet Explorer 6.0+ xmlhttp=new ActiveXObject("Msxml2.XMLHTTP"); catch(e) { } tipobrowser="internet Explorer 5.5+"; try { } // Internet Explorer 5.5+ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); catch(e) { } tipobrowser="il tuo browser non supporta AJAX!"; Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 34

Una pagina di test (III) document.getelementbyid("msg").innerhtml="tipo di browser: "+tipobrowser; } //--></script> </head> <body> <a href="javascript:ajaxfunction() javascript:ajaxfunction()">test</a><br /> <span id="msg"></span> </body> </html> La pagina presentata ci permette di verificare se il nostro browser supporta la tecnologia AJAX. Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 35

Dobbiamo fare tutto da zero? Chiaramente no: esistono numerose librerie che implementano: comunicazione asincrona, codifica/decodifica XML, funzioni avanzate per l interfaccia utente es.: utilizzo avanzato del mouse (posizione, ecc). Es.: GoogleGears, XAjax Complementi di Tecnologie Web A.A. 2011-2012 M.Franceschet, V.Della Mea e I.Scagnetto - 36