jQuery è un framework javascript che permette di semplificare la scrittura di codice javascript, facilitando l'iterazione con gli elementi della pagina (controlli, stili, eventi, animazioni, ...), e permettendo di aumentare la user experience delle applicazioni, riducendone al tempo stesso la complessità di scrittura. Vista la sua diffusione e potenza, è stato anche incluso nei project templete di Visual Studio. In questa sessione vedremo cos'è jQuery, e scopriremo le potenzialità e funzionalità che offre, verificando se il motto "write less do more" sia vero o meno.
jQuery è un framework javascript che permette di semplificare la scrittura di codice javascript, facilitando l'iterazione con gli elementi della pagina (controlli, stili, eventi, animazioni, ...), e permettendo di aumentare la user experience delle applicazioni, riducendone al tempo stesso la complessità di scrittura. Vista la sua diffusione e potenza, è stato anche incluso nei project templete di Visual Studio. In questa sessione vedremo cos'è jQuery, e scopriremo le potenzialità e funzionalità che offre, verificando se il motto "write less do more" sia vero o meno.
Programmazione web libera dai frameworkFrancesca1980
Un nuovo progetto web parte quasi sempre con la domanda "che framework usiamo?" Diamo per scontato che non si possa sviluppare per il web senza fare uso di framework. Ma che succederebbe se decidessimo di sviluppare senza framework? Potremmo ottenere maggiore controllo e qualità, meno rischi e meno costi. Serve "solo" la volontà di imparare a programmare bene. Darò alcune dritte con Java e TDD.
Talk di Luca Lusso | Drupal Day Roma 2011
Snellire il carico del server per generare e restituire un json da usare per un autocompletamento. Notificare che un nodo è stato appena creato a tutti gli utenti che stanno visitando il sito in questo momento. Oppure ancora mettere a disposizione degli utenti una chat in tempo reale. Tutto questo (e molto altro) si può delegare ad un processo esterno a Drupal per aumentare velocità di interazione e diminuire il carico del server.
Durante il talk si vedrà come installare e usare node.js e come integrarlo con Drupal. Verrà mostrato il modulo nodejs presente nel repository di drupal.org
Quante volte in questi ultimi mesi abbiamo sentito parlare di AJAX?
In effetti molti articoli che ho letto presuppongono una qualche conoscenza di AJAX stesso o comunque una buona conoscenza da parte dei lettori delle tecnologie alla sua base, ad esempio Javascript.
Ho avuto la sensazione che AJAX sia percepito dai neofiti come una cosa per soli programmatori esperti e quindi ho pensato di scrivere un articolo per cercare di aiutare coloro che si avvicinano a questo mondo per la prima volta permettendogli di scrivere le loro prime semplici applicazioni.
Sperando di riuscire nel mio intento vi auguro buona lettura.
How create a single page apps using html5 and javascript Stefano Marchisio
Create a html5/javascript apps with mvc/ajax using knockout.js/mvvm. Javascript to IQueryable is a framework that allows you to write a simple query in javascript client side and then execute it server side with EntityFramework or a linq provider that implement IQueryable. On the server is used "Dynamic Expressions and Queries in LINQ by Microsoft" to compose dynamically your query. In this way you can create a grid with filter, paging and sort functions. There is also support for: mvc3 unobtrusive jquery validation and jquery mobile/phonegap. - http://Javascriptiqueryable.codeplex.com - http://www.youtube.com/watch?v=qjwyKwsXHKs - http://www.linqitalia.com/articoli/entity-framework/sfruttare-javascript-eseguire-query-linq-server-tramite-dynamic-iqueryable.aspx
Programmazione web libera dai frameworkFrancesca1980
Un nuovo progetto web parte quasi sempre con la domanda "che framework usiamo?" Diamo per scontato che non si possa sviluppare per il web senza fare uso di framework. Ma che succederebbe se decidessimo di sviluppare senza framework? Potremmo ottenere maggiore controllo e qualità, meno rischi e meno costi. Serve "solo" la volontà di imparare a programmare bene. Darò alcune dritte con Java e TDD.
Talk di Luca Lusso | Drupal Day Roma 2011
Snellire il carico del server per generare e restituire un json da usare per un autocompletamento. Notificare che un nodo è stato appena creato a tutti gli utenti che stanno visitando il sito in questo momento. Oppure ancora mettere a disposizione degli utenti una chat in tempo reale. Tutto questo (e molto altro) si può delegare ad un processo esterno a Drupal per aumentare velocità di interazione e diminuire il carico del server.
Durante il talk si vedrà come installare e usare node.js e come integrarlo con Drupal. Verrà mostrato il modulo nodejs presente nel repository di drupal.org
Quante volte in questi ultimi mesi abbiamo sentito parlare di AJAX?
In effetti molti articoli che ho letto presuppongono una qualche conoscenza di AJAX stesso o comunque una buona conoscenza da parte dei lettori delle tecnologie alla sua base, ad esempio Javascript.
Ho avuto la sensazione che AJAX sia percepito dai neofiti come una cosa per soli programmatori esperti e quindi ho pensato di scrivere un articolo per cercare di aiutare coloro che si avvicinano a questo mondo per la prima volta permettendogli di scrivere le loro prime semplici applicazioni.
Sperando di riuscire nel mio intento vi auguro buona lettura.
How create a single page apps using html5 and javascript Stefano Marchisio
Create a html5/javascript apps with mvc/ajax using knockout.js/mvvm. Javascript to IQueryable is a framework that allows you to write a simple query in javascript client side and then execute it server side with EntityFramework or a linq provider that implement IQueryable. On the server is used "Dynamic Expressions and Queries in LINQ by Microsoft" to compose dynamically your query. In this way you can create a grid with filter, paging and sort functions. There is also support for: mvc3 unobtrusive jquery validation and jquery mobile/phonegap. - http://Javascriptiqueryable.codeplex.com - http://www.youtube.com/watch?v=qjwyKwsXHKs - http://www.linqitalia.com/articoli/entity-framework/sfruttare-javascript-eseguire-query-linq-server-tramite-dynamic-iqueryable.aspx
Java Unit Testing - In container and database testing
Ajax e jQuery
1. Ajax e jQuery
Emiliano Castellina
Dipartimento di Automatica e Informatica
Politecnico di Torino
Introduzione a jQuery by Emiliano Castellina is licensed under a Creative Commons Attribuzione - Non commerciale - Condividi allo stesso modo 3.0 Unported License.
2. Introduzione
Jesse James Garrett nel 2005 ideò il
termine Ajax (Asynchronous JavaScript and
XML).
Scambio di dati tra client e server in
background
Aggiornamento dati senza esplicito refresh
della pagina
Rich Internet Application: gmail, google
docs, facebook, twitter, …
2
3. XMLHttpRequest (XHR)
Metodi
OggettoJavascript che permette la
comunicazione tra client e server
Metodo Descrizione
abort() La richiesta in esecuzione viene cancellata
getAllResponseHeader() Singola Stringa contenente tutti i nomi e i valori degli header della
risposta
getResponseHeader Stringa con il valore dell'header con nomeHeader
(nomeHeader)
open(method, url, async, Imposta i parametri della connessione con il client
username,password) • Method: post o get
• url della pagina a cui connettersi(Limitato allo stesso server)
• async true se la chimata è asincrona, false sincrona
• Username,password dati per connessioni autenticate
send(content) Avvia la richiesta con il content (opzionale) come body
setRequestHeader(name,request) Imposta l'header della richiesta
3
4. XMLHttpRequest (XHR)
Proprietà
Proprietà Descrizione
readyState Numero intero che indica lo stato della richiesta:
• 0 Non Inizializzato
• 1 Connessione Aperta
• 2 Dati inviati
• 3 Ricezione dati in corso
• 4 Ricezione dati completata
onreadystatechange Permette di registrare una funzione richiamata ogni volta che il
readyState cambia
responseText Il contenuto della risposta
responseXML Se il contenuto della risposta è XML, questa proprietà restituisce il
DOM XML generato a partire dal contenuto
status Status HTTP della risposta:
• 200 OK
• 404 NOT FOUND
• 301 MOVED PERMANENTLY
• ….
statusText Valore testuale dello status della risposta (OK, NOT FOUND, …)
4
5. Esempio Ajax tradizionale
var xhr;!
if (window.XMLHttpRequest) { !
!xhr = new XMLHttpRequest();!
} else if (window.ActiveXObject) {!
!xhr = new ActiveXObject("Msxml2.XMLHTTP");!
} else {!
!throw new Error("Ajax non supportato");!
}!
xhr.onreadystatechange = function() {!
if (xhr.readyState == 4) {! Completata
!if (xhr.status == 200){! OK
!var elem=document.getElementById('caricaqui');!
!elem.innerHTML =xhr.responseText;!
}!
xhr.open('GET','/esempio.html'); !
xhr.send();!
5
8. load definizione
$(selettore).load( url [filtro],
[dati], [funzione(risposta,
status,xhr)] )!
◦ url indirizzo a cui è inviata la richiesta
◦ [filtro] filtro applicato al DOM della risposta
ricevuta. Si utilizza la stessa sintassi del selettori
jQuery
◦ [dati] parametri opzionali inviati nel corpo della
richiesta
◦ [funzione] funzione richiamata quando la
richiesta è stata completata
!
8
9. load esempi
/*l'elemento con id="ricevuto" carica come contenuto la
pagina es.html. A caricamento avvenuto viene mostrata
una finesta di dialogo!
*/!
$("#ricevuto").load("es.html",function(dati){!
!alert("dati caricati"); ! ! ! !!
})!
/* al click sugli elementi di class="cariqui" viene
caricato in essi l'elemento della pagina es.html con
id="speciale"!
*/!
$(".caricaqui").click(function(){!
!$(this).load("es.html #speciale");!
})!
9
10. $.ajax(configurazione) 1/2
Nome Tipo Descrizione
url Stringa Indirizzo a cui inviare la richiesta
type Stringa GET (default) o POST
data Oggetto contenuto della richiesta (parametri inviati alla
pagina a cui si effettua la richiesta)
dataType String Tipologia di dati ottenuti come risposta:
• xml
• html
• json: formato di interscambio dati javascript
• jsonp: oggetto json con padding
• script: risposta processato come un javascript
• text (default): testo semplice
timeout Numero Tempo massimo, espresso in millisecondi, per
ottenere risposta dal server. In caso non si ottenga
risposta viene richiamata la funzione di callback
associata all'handler error
10
11. $.ajax(configurazione) 2/2
Nome Tipo Descrizione
success Funzione funzione richiamata quando la richiesta al server
ha avuto successo. Il contenuto della risposta è
contenuto come primo parametro, mentre lo status
come secondo parametro
error Funzione funzione richiamata quando si è verificato un
errore nella richiesta al server. Questa funzione ha
3 parametri:
• oggetto xhr
• status (sempre error)
• oggetto exception xhr
complete Funzione funzione chiamata quando la richiesta è stata
completata. Ha due parametri: xhr e status.
Questa funzione è chiamata dopo success o error
beforeSend Funzione funzione chiamate prima di iniziare la richiesta al
server
async Booleano false, effettua una richiesta sincrona. True (default) 11
16. HTML
Ilserver restituisce direttamente codice
html nella risposta
$.ajax({!
!dataType:'html',!
!url:'aggiungi.html',!
!}).success(function(data){!
! !//modifica html ricevuto!
! !$(data).children("p").addClass(".ricevuto");!
! !$("#ricevitore").append(data);!
!})!
16
17. XML
Viene fornita una risposta in formato XML
Il DOM XML può essere gestito con i classici
selettori di jQuery (.find .children .each .attr)
Esempio
<?xml version="1.0" encoding="UTF-8"?>!
<regioni>!
<regione name="Abruzzo">!
<abitanti totale="1338898">!
<uomini>650752</uomini>!
<donne>688146</donne>!
</abitanti>!
</regione>!
</regioni>
17
18. XML esempio
$.ajax({!
!url:'ajax/regioni.xml',!
!dataType:"xml"!
}).success(function(data){!
!$(data).find("regione").each(function(){!
!var nome=$(this).attr("name");!
var divR=$("<div>").append($("<h1/>")!
! ! ! ! !.text(nome));!
!var abitanti=$(this).find("abitanti").get(0);!
!$(divR).append($("<h2>")!
!.text("abitanti "+$(abitanti).attr
('totale')));!
!
$("#regioni").append(divR);!
!})!
})
18
21. Limitazioni di Sicurezza
È possibile effettuare richieste solo sulle
stesso sito della pagina che contiene lo
script
Come si superano?
◦ W3C Cross-Origin Resource Sharing
◦ Pagine proxy
◦ <script> jsonp
21
22. Cross-Origin Resource Sharing
http://www.w3.org/TR/cors/
Proposta del 2010
Specifica negli header della risposta dei
client che possono accedere ai dati
◦ Access-Control-Allow-Origin: *
22
23. Proxy
La richiesta ajax non viene effettuata
direttamente al sito da cui si vogliono
ricevere dati
la richiesta viene inviata a una pagina
web dinamica (proxy) presente sullo stesso
sito in cui è ospitato lo script.
Il proxy (php, jsp, asp, ..)accede
direttamente ai dati contenuti su un altro
sito.
23
24. <script>
L'elemento script nell'attributo src può
contenere riferimenti a siti esterni
Permette il caricamento di script da altri
server
Oltra agli script i file caricati possono
contenere altri dati
Gli oggetti definiti negli script caricati
possono accedere ai dati residenti sul server
d'origine
Esempi:
◦ Google maps, Google calendar, youtube
24
25. jsonp
Utilizza l'elemento script per ricevere dati
da un sito esterno
La richiesta ha come parametro
obbligatorio callback=nomefunzione
◦ jQuery lo fa in automatico
Quando lo script viene caricato, chiama la
funzione nomefunzione passando come
parametro un oggetto json
25