Esercitazione su AJAX

Documenti analoghi
Esercizi su JavaScript, DOM e Web Storage

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

Esercitazione di riepilogo

Esercizi su HTML5 e form

INTRODUZIONE ALL INFORMATICA CORSO DI LAUREA IN BIOLOGIA A.A. 2015/2016

Esercizi su XML e DTD

VALUTAZIONE CONTRIBUTI PERCEPITI

A Descrizione: ruota effetti opzionale con supporto/ optional effects wheel with support/ iprofile FLEX MODIFICHE. Codice assemblato:

Esercizi su HTML e JavaScript

l'editing delle pagine web non è nella forma ma nella metodologia di costruzione e di pubblicazione.

CORSO DI LAUREA IN SCIENZE DELLA FORMAZIONE PRIMARIA

CORSO DI LAUREA IN SCIENZE DELLA FORMAZIONE PRIMARIA

Guida Piattaforma E-learning per lo Studente

Introduzione ad AJAX

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

Sommario FONDAMENTI DI INFORMATICA. File e Python. Gestione di file. LINGUAGGIO Python Gestione dei file

Home Caricare i font Caricamento Caricamento di font Menu Stampante Menu Font Menu Barra degli strumenti Menu Guida I tasti di scelta rapida

Lena Cota Guido Corso di Informatica - II livello. Internet Explorer. Navigare in Internet

Esercizi su XML, DTD e DOM

GEOPORTALE Arpa Piemonte

Corso di Basi di Dati A.A. 2015/2016

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

Realizzare una piccola chat in php senza database

Linguaggio C: Introduzione ad ambienti di sviluppo integrati (IDE) e a Dev-C++ Università degli Studi di Brescia

Utilizzo del modulo per aprire le commesse in Ardis

Guida per il diario del docente tramite applicativo ESSE3

Guida Piattaforma E-learning per lo Studente

Utilizzo collegamento remoto

Linguaggio HTML. Reti. Il Linguaggio HTML. Il Linguaggio HTML

Traccia 1. Nome Cognome Matricola Firma. Spazio Riservato alla Commissione. Esercizio 1 Esercizio 2 Esercizio 3 Esercizio 4 Esercizio 5 Totale

GESTIONE DELLA PRODUZIONE

Navigare in Internet Laboratorio di approfondimento la creazione di siti web e/o blog. Marco Torciani. (Seconda lezione) Unitre Pavia a.a.

Realizzazione di un Tool per l iniezione automatica di difetti all interno di codice Javascript

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

Inserire un nuovo foglio

Sommario. 1. Internet subito Le FAQ di Internet 13. Sommario vii

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

IBM SPSS Modeler Text Analytics - Istruzioni di installazione (Licenza per utente autorizzato)

Programmazione I - Laboratorio

Modulo III - Creazione di documenti, presentazioni e report

Il Paradigma REST per lo sviluppo di applicazioni Web 2.0

POWER POINT Uso del programma, sue applicazioni e strumenti di lavoro.

OBIETTIVI MINIMI Anno scolastico TIC-TIT. 1. Foglio elettronico: funzioni fondamentali (Excel)

Software realizzato dallavgsoft2004 per la gestione della Prima Nota della tua azienda.

GEOPORTALE Arpa Piemonte Sistema Informativo Ambientale Geografico

Corso di Informatica di Base

Manuale Utente Scrivania Misure Agevolazioni DGIAI Sommario

Le funzioni in JavaScript. Modularizzazione

Appello di Fondamenti di Informatica 12/09/2017

COME FAR CONOSCERE LA TUA APP

Introduzione a Visual Studio 2005

Transcript:

Linguaggi e tecnologie per il Web prof. Riccardo Rosati corso di Laurea in Ingegneria Informatica e Automatica Sapienza Università di Roma, a.a. 2016/2017 Esercitazione su AJAX Esercizio 1 Scrivere un documento HTML che permette di selezionare, tramite clic su 4 bottoni, il caricamento asincrono di 4 diversi documenti HTML in una zona del documento stesso. Soluzione <title>ajax: esercizio 1</title> <body> <div> <button>documento_1</button> <button>documento_2</button> <button>documento_3</button> <button>documento_4</button> <div id="zonadinamica"> Seleziona il documento da visualizzare var documenti = document.getelementsbytagname("button"); for (var i = 0; i < documenti.length; i++) { documenti[i].onclick = caricadocumento; function caricadocumento(e) { httprequest.onreadystatechange = gestisciresponse; 1

function gestisciresponse(e) { if (e.target.readystate == XMLHttpRequest.DONE && e.target.status == 200) { document.getelementbyid("zonadinamica").innerhtml = e.target.responsetext; </html> Esercizio 2 Scrivere un documento HTML che permette di caricare in modo asincrono, mediante posizionamento del mouse su due stringhe di testo, due diversi documenti HTML in due zone distinte del documento stesso. Soluzione <title>ajax: esercizio 2</title> <body> <div id="dd">documento_1 <div id="ee">documento_2 <div id="zonadd"> zona del documento 1 <div id="zonaee"> zona del documento 2 document.getelementbyid("dd").onmouseover=caricadocumento1; document.getelementbyid("ee").onmouseover=caricadocumento2; function caricadocumento1(e) { httprequest.onreadystatechange = gestisciresponse1; 2

function caricadocumento2(e) { httprequest.onreadystatechange = gestisciresponse2; function gestisciresponse1(e) { if (e.target.readystate == XMLHttpRequest.DONE && e.target.status == 200) { document.getelementbyid("zonadd").innerhtml = e.target.responsetext; function gestisciresponse2(e) { if (e.target.readystate == XMLHttpRequest.DONE && e.target.status == 200) { document.getelementbyid("zonaee").innerhtml = e.target.responsetext; </html> Esercizio 3 Scrivere un documento HTML che permette di caricare in modo asincrono, mediante posizionamento del mouse su 4 stringhe di testo, 4 diversi documenti HTML in 4 zone distinte del documento stesso. Soluzione Ovviamente, si potrebbe semplicemente estendere la soluzione del precedente esercizio, replicando 4 volte (invece delle due precedenti) le funzioni caricadocumento e gestisciresponse. Per evitare questa ridondanza, proponiamo una soluzione parametrica e più generale. Tale soluzione si basa sull aggiunta di una proprietà prevtarget all oggetto XMLHttpRequest creato dalla funzione caricadocumento. (Ricordiamo che, data la sua natura prototipale, in JavaScript è possibile aggiungere liberamente proprietàd un oggetto). Tale proprietà memorizza l oggetto da cui si invoca la funzione caricadocumento: in tal modo è possibile, nella funzione GestisciResponse, risalire a tale oggetto e visualizzare i dati ricevuti nella corrispondente zona del documento. <title>ajax: esercizio 3</title> 3

<body> <span id="dd">documento_1</span><br/> <span id="ee">documento_2</span><br/> <span id="ff">documento_3</span><br/> <span id="gg">documento_4</span><br/> <div id="zonadd"> zona del documento 1 <div id="zonaee"> zona del documento 2 <div id="zonaff"> zona del documento 3 <div id="zonagg"> zona del documento 4 var documenti = document.getelementsbytagname("span"); for (var i = 0; i < documenti.length; i++) { documenti[i].onmouseover = caricadocumento; function caricadocumento(e) { httprequest.prevtarget = e.target; httprequest.onreadystatechange = gestisciresponse; function gestisciresponse(e) { if (e.target.readystate == 4 && e.target.status == 200) { document.getelementbyid("zona" + e.target.prevtarget.getattribute("id")).innerhtml = e.target.responsetext; 4

</html> Esercizio 4 Scrivere un documento HTML che presenta due elenchi di 4 stringhe di testo ciascuno, e che permette di caricare in modo asincrono, mediante posizionamento del mouse su tali stringhe, 8 diversi documenti HTML in due zone distinte del documento stesso (una zona per i documenti relativi alla prima lista, l altra per i documenti relativi alla seconda lista). Soluzione <title>ajax: esercizio 4</title> <body> <span class="aa">documento_1</span><br/> <span class="aa">documento_2</span><br/> <span class="aa">documento_3</span><br/> <span class="aa">documento_4</span><br/> <br/> <span class="bb">documento_5</span><br/> <span class="bb">documento_6</span><br/> <span class="bb">documento_7</span><br/> <span class="bb">documento_8</span><br/> <div id="zona_aa"> zona del primo insieme di documenti <div id="zona_bb"> zona del secondo insieme di documenti var documenti = document.getelementsbytagname("span"); for (var i = 0; i < documenti.length; i++) { documenti[i].onmouseover = caricadocumento; function caricadocumento(e) { httprequest.prevtarget = e.target; httprequest.onreadystatechange = gestisciresponse; 5

function gestisciresponse(e) { if (e.target.readystate == 4 && e.target.status == 200) { document.getelementbyid("zona_" + e.target.prevtarget.getattribute("class")).innerhtml = e.target.responsetext; </html> 6