AJAX. Asynchronous JavaScript and XML

Documenti analoghi
Ajax e jquery. Emiliano Castellina. Dipartimento di Automatica e Informatica Politecnico di Torino

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

Seminario Introduzione ad Ajax

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

/E / + D O D M O + C S C S) S

Parte 6 JSON, Web Storage API, funzioni JavaScript e user script

Corso di Applicazioni Telematiche

Introduzione ad AJAX

AJAX. Recap. ! Ci sono domande?! Esame! Proponete esercizi sui temi del corso e condividiamo le soluzioni

Gioco. credits: h+p:// to- make- a- simple- html5- canvas- game/

Alma Mater Studiorum Università di Bologna Scuola di Ingegneria e Architettura. Tecnologie Web T A.A Esercitazione 06 - AJAX

Alma Mater Studiorum Università di Bologna Scuola di Ingegneria e Architettura. Tecnologie Web T A.A Esercitazione 06 - AJAX

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

Introduzione a AJAX - Asynchronous Javascript And Xml

INTRODUZIONE AI PRINCIPI DELLO SVILUPPO DI APPLICAZIONI WEB INTERATTIVE

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

Laboratorio di Basi di Dati

Dott.Ing.Ivan Ferrazzi. XML e AJAX. Introduzione ai concetti base. Dott. Ing. Ivan Ferrazzi V1.2 del 15/01/2014 1/20

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

Concetti fondamentali

Applicazioni web. Parte 4 AJAX

Cos'è this? this è un elemento DOM

Sviluppare applicazioni Web 2.0 con Ajax

DOM (Document Object Model) manipolato attraverso un linguaggio ECMAScript come JavaScript o JScript per mostrare le informazioni ed interagirvi;

Ajax. Pasqualetti Veronica

AJAX (Asynchronous JavaScript and XML)

Esercizi su JavaScript, DOM e Web Storage

Alma Mater Studiorum Università di Bologna. Scuola di Ingegneria e Architettura. Tecnologie Web T. Esercitazione 09 Riepilogo

Applicazioni web-based. Progettazione di Sistemi Interattivi. Implementazione di sistemi interattivi web-based (prima parte) Gli Standard Web

Esempio su strutture dati dinamiche: ArrayList

Javascript. - Corso Web Design - Media Dream Academy. Stefano Gaborin

<WEB SERVICE> PROPOSTA DEI SERVIZI

Alma Mater Studiorum Università di Bologna. Scuola di Ingegneria e Architettura. Tecnologie Web T. Esercitazione Riepilogo

Esempio su strutture dati dinamiche: ArrayList

Mantenimento dello stato

Programmazione web lato client con JavaScript. Marco Camurri 1

RESTful Services. Sistemi Informativi Aziendali A.A. 2012/2013

Tito Flagella - Il protocollo HTTP

Corso di Telematica II

Internet of Things & Wireless Sensor Networks

Argomenti XML JSON. Linguaggi per la definizione e lo scambio di dati strutturati, semi-strutturati, non strutturati. XML Data Model JSON

D B M G Il linguaggio HTML

Basi di Dati Jvascript, AJAX

ALTRI TIPI DI CONNESSIONE

AdvSelf Italia Srl. Manuale Gateway HTTP AdvSelf Italia srl - All Rights Reserved

Corso di Web Programming

Manuale d uso della Posta TBS. Oracle Collaboration Suite

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

PYTHON Inviare dati con i form A cura di Silvio Bonechi [sabandini_at_tiscali_dot_it] per

JavaScript - 4. Modello ad oggetti tradizionale. L ambiente del web browser 1

4. I moduli in Access 2000/2003

@2011 Politecnico di Torino 1

Tipi di dato strutturati: Array

aggiunge del testo nella parte finale del tag, in questo caso la stringa da controllare.

JavaScript: eventi, errori ed eccezioni. Pasqualetti Veronica

SMART TV APPLICATIONS

Laboratorio Progettazione Web Modello di applicazione Web

Corso di PHP. Prerequisiti. 6.2 PHP e il web 2. Conoscenza HTML Tecnica della programmazione Principi di programmazione web

Node.js Introduzione alla programmazione Dott. Ing. Ivan Ferrazzi V1.0 del 05/11/2012

Node.js + Drupal. Luca Lusso. giovedì 1 dicembre 11

3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

Come aggiungere al nostro sito web il login basato su Facebook

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

La classe Object. L2-Linguaggi di Programmazione II-unina 1

Esercitazione su AJAX

Relazione MajoGEN. Generatore web di segnali! Matteo Mosconi & Gabriele De Rosa - 5 Febbraio 2014 RELAZIONE MAJOGEN

1 JSPDynPage, componenti portale e Java Server Pages

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

1 Gestione dell utente connesso in sessione con Java Server Pages, Java Beans, Servlet

JSON for Linked Data JSON-LD

Esempi in Java di program.ne O-O

Ajax: specifiche sull oggetto XMLHttpRequest

JavaScript. crash course. by Stefano Burigat

Specifiche API. Provisioning Rivenditore

Laboratorio Reti di Calcolatori Laurea Triennale in Comunicazione Digitale. Anno Accademico 2013/2014

Nessuna parte del testo può essere in alcun modo riprodotta senza autorizzazione scritta di Sperling & Kupfer Editori.

Esercizio 1: archivio CD e DVD

Web e HTTP. path name. host name Realizzato da Roberto Savino.

Programmazione client-side: JavaScript

Polimorfismo parametrico vs polimorfismo per inclusione

Il Web-Service SDMX dell ISTAT

Utilizzando per la connessione al database un driver di Tipo 1:

VBScript. VBScript. Visual Basic Scripting Edition. Linguaggio di script per browser e server Microsoft Deriva da Visual Basic, ma è interpretato

Web API. Guida all uso

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Modello a scambio di messaggi

MANUALE DI INTEGRAZIONE API DMM (v 2.5)

Appunti della lezione di Database del 3/11/2016 (pomeriggio)

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione distribuita in Java. Socket & Client-Server

Ipertesto (testo + link a risorse)

MODULO 1 PARTE 3. Programmazione (scripting) server-side con PHP 3.a HTTP request e HTTP response (form e link)

Il Paradigma REST per lo sviluppo di applicazioni Web 2.0

La fase di progetto e realizzazione. PROGETTAZIONE DEL SOFTWARE (Ing. Gestionale) Diagramma delle classi realizzativo

Reverse Engineering di Rich Internet Applications basate su AJAX

BASI LINGUAGGIO. Programmazione Web 1

RICHIESTA: METODO WEB SERVICE: INPUT:

Transcript:

AJAX Asynchronous JavaScript and XML

AJAX Lo sviluppo di applicazioni HTML con AJAX si basa su uno scambio di dati in background fra web browser e server, che consente l'aggiornamento dinamico di una pagina web senza esplicito ricaricamento da parte dell'utente. AJAX è asincrono nel senso che i dati extra sono richiesti al server e caricati in background senza interferire con il comportamento della pagina esistente. Tuttavia, e a dispetto del nome, l'uso di XML non è obbligatorio e, come vedremo, le richieste di caricamento possono essere sia sincrone che asincrone, anche se il meccanismo asincrono è di gran lunga il più utilizzato.

COME FUNZIONA Evento Creazione di un oggetto XMLHttpRquest Invio delle richiesta Browser Server Elaborazione della richiesta Creazione della risposta e invio dei dati elaborati al browser Elaborazione dei dati con Javascript Aggiornamento della pagina utilizzando il DOM Browser

XMLHttpRequest L'oggetto serve a gestire il caricamento di dati dal server via ajax. Questi i classici passi: // Creo l'oggetto XMLHttpRequest var req = new XMLHttpRequest(); // Creo un gestore per l'evento load req.addeventlistener('load', function() { // Se non ci sono errori cambio il contenuto HTML della div con id change if (this.status < 400) { document.getelementbyid('change').innerhtml = this.responsetext; else { // Altrimenti provoco un errore javascrit throw(this.statustext); ); // Apro la connessione req.open('get','contenuto.txt'); // Invio la richiesta req.send();

Metodi di XMLHttpRequest Metodo new XMLHttpRequest() abort() getallresponseheaders() getresponseheader() open(method, url, async, user, psw) send() send(string) setrequestheader() Descrizione Crea un Nuovo XMLHttpRequest object Cancella la richiesta corrente Ritorna informazione sull'header della risposta Ritorna informazione sull'header della risposta Apre la connessione specificando la configurazione della richiesta method: GET o POST url: l'url da richiedere async: true (asincrono) o false (sincrono) user: username (in caso sia previsto login) psw: password (in caso sia previsto login) Manda la richiesta al server (Metodo GET) Manda la richiesta al server (Metodo POST) Aggiunge informazioni all'header della richiesta

Proprietà di XMLHttpRequest Metodo onreadystatechange readystate responsetext responsexml status statustext onreadystatechange Descrizione Defines a function to be called when the readystate property changes Stato di XMLHttpRequest. 0: request not initialized; 1: server connection established; 2: request received; 3: processing request 4: request finished and response is ready Dati ricevuti Dati ricevuti come XML Restituisce lo stato della richiesta: 200: "OK"; >= 400: Errore (spiegato da statustext) Restituisce il testo corrispondente a status (es.. "OK" o "Not Found") Funzione che viene chiamata quando cambia lo stato.

JSON JavaScript Object Notation

JSON Quando si scambiano dati tra un browser e un server, i dati possono essere solo in formato testo. JSON è formato testo in cui può essere convertito qualsiasi oggetto JavaScript, che, in questo modo, può essere inviato al server. Allo stesso modo possiamo convertire qualsiasi JSON ricevuto dal server in un oggetto JavaScript. Con questo sistema possiamo scambiare informazioni tra client utilizzando il formato che Javascript predilige e che ci semplifica molto l'elaborazione: l'oggetto.

JSON Utilizzando JSON posso: Convertire un oggetto Javascript in stringa e inviarlo al server come parametro di un url. Convertire una stringa JSON ottenuta come risposta dal server in un oggetto per elaborarlo con Javascript Memorizzare sul computer dell'utente un oggetto costruito run-time dalla pagina web utilizzando localstorage.

SINTASSI La sintassi JSON è derivata dalla sintassi di notazione degli oggetti JavaScript: I dati sono coppie nome / valore I dati sono separati da virgole Le parentesi graffe identificano gli oggetti Le parentesi quadre identificano gli array Le coppie nome/valore seguono questa sintassi: "nome":"pippo" con il nome della proprietà sempre fra virgolette doppie

VALORI In JSON, i valori devono appartenere a uno dei seguenti tipi di dati: String Number Object (oggetto JSON) Array Boolean null JASON non è in grado di rappresentare i seguenti tipi: Function Date undefine. In JSON, i valori delle stringhe devono essere scritti con doppie virgolette.

METODI // Converte l'oggetto javascriptobject in una stringa JSON JSON.stringify(javascriptObject); // Converte stringa JSONString in un oggetto Javascipt JSON.parse(JSONString);

AJAX Una classe per leggere i post di una pagina Facebook

STRUTTURA DELLA CLASSE (function(win){ "use strict"; function FbPageFeed(options) { // Inizializzazione dell'oggetto // Proprietà e metodi win.fbpagefeed = FbPageFeed; )(window)

CONFIGURAZIONE // Configuazione dell'oggetto FbPageFeed.prototype.config = { appid: null, appsecret: null, fbservice: "https://graph.facebook.com", // Elenco dei campi che desidero utilizzare fields: 'id,from,name,message,created_time,story', fbpageid: null, callback: null ;

COSTRUCTOR (CONFIGURAZIONE E INIZIALIZZAZIONE) function FbPageFeed(options) { options = options {; for (var prop in this.config) { if (options[prop]) { this.config[prop] = options[prop]; this.init();

INIZIALIZZAZIONE FbPageFeed.prototype.init = function() { var self = this; self.callback = self.config.callback; self.config.httprequest = new XMLHttpRequest(); self.config.httprequest.addeventlistener('load', function() { if(this.responsetext) { self.response = JSON.parse(this.responseText); else { sekf.response = { error: { message: this.statustext, code: this.status ; if (typeof(self.callback === "function")) { self.callback(self.success(), self.response); ) ;

METODO SUCCESS // La richiesta ha avuto successo? FbPageFeed.prototype.success = function() { if (this.response) { if (this.response.data) { return true; return false;

ACCESS TOKEN // Recupero dell'access_token // Assegnando alla proprietà access_token un'altra // funzione posso cambiare il metodo // con cui viene ottenuto l'access_token FbPageFeed.prototype.access_token = function () { if (this.config.appid && this.config.appsecret) { return this.config.appid + " " + this.config.appsecret; return null;

URL CUI VIENE INVIATA LA RICHIESTA // Costruzione dell'url della richiesta FbPageFeed.prototype.feedUrl = function() { var addtrailingslash = function (path) { if (path.substr(-1) == '/') { return path; return path + '/'; var at = this.access_token(); var self = this; var url = addtrailingslash(self.config.fbservice) + addtrailingslash(self.config.fbpageid) + 'feed' + '?fields=' + self.config.fields + (at? '&access_token=' + at : ''); return url;

URL CUI VIENE INVIATA LA RICHIESTA // Invio della richiesta e caricamento dei dati FbPageFeed.prototype.load = function () { try { this.response = null; this.config.httprequest.open('get', this.feedurl()); this.config.httprequest.send(); catch (err) { console.log(err);