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.
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.
Come aggiornare i dati di una tabella relazionale prima di chiavi straniere. Le quattro operazioni fondamentali. CRUD. Visualizzare una lista di righe della tabella relazionale, inserire una nuova riga, ricercare un record conoscendo la sua chiave primaria. Modificare e annullare
by Davide Cerbo e Stefano Linguerri
La programmazione web sta facendo passi da gigante e oggi l’utente si aspetta che l’esperienza di utilizzo si avvicini sempre di più a quella a cui è abituato nei classici applicativi desktop. Il mondo degli sviluppatori ha risposto inventanto una nuova sigla: RIA, cioè Rich Internet Application. Google non è stata a guardare e ha fornito la sua risposta a questa esigenza donando alla community Google Web Toolkit. Questo nuovo framework permette di sviluppare in Java tutta l’interfaccia utente per poi ottenere un codice javascript che funzionerà su qualsiasi browser web senza l’installazione di plugin aggiuntivi. In questa presentazione vedremo:
* perchè sviluppare applicazioni RIA
* perchè usare GWT
* come GWT utilizza AJAX per comunicare con il server
* le ottimizzazione che avremo utilizzando GWT
* come uscire dal browser con Google Gear e Mozilla Prism
* e non solo…
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
Monografia sobre crowdsourcing + crowd testing + processo de teste de softwareMoisés Armani Ramírez
Este documento apresenta uma monografia sobre o crowd testing e como ele pode ser inserido no processo de teste de software tradicional. O trabalho descreve o conceito de crowdsourcing e o processo de teste de software, e investiga os conceitos e aplicações do crowd testing. O objetivo é identificar como o crowd testing pode ser utilizado no controle da qualidade de software para complementar os testes tradicionais.
Come aggiornare i dati di una tabella relazionale prima di chiavi straniere. Le quattro operazioni fondamentali. CRUD. Visualizzare una lista di righe della tabella relazionale, inserire una nuova riga, ricercare un record conoscendo la sua chiave primaria. Modificare e annullare
by Davide Cerbo e Stefano Linguerri
La programmazione web sta facendo passi da gigante e oggi l’utente si aspetta che l’esperienza di utilizzo si avvicini sempre di più a quella a cui è abituato nei classici applicativi desktop. Il mondo degli sviluppatori ha risposto inventanto una nuova sigla: RIA, cioè Rich Internet Application. Google non è stata a guardare e ha fornito la sua risposta a questa esigenza donando alla community Google Web Toolkit. Questo nuovo framework permette di sviluppare in Java tutta l’interfaccia utente per poi ottenere un codice javascript che funzionerà su qualsiasi browser web senza l’installazione di plugin aggiuntivi. In questa presentazione vedremo:
* perchè sviluppare applicazioni RIA
* perchè usare GWT
* come GWT utilizza AJAX per comunicare con il server
* le ottimizzazione che avremo utilizzando GWT
* come uscire dal browser con Google Gear e Mozilla Prism
* e non solo…
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
Monografia sobre crowdsourcing + crowd testing + processo de teste de softwareMoisés Armani Ramírez
Este documento apresenta uma monografia sobre o crowd testing e como ele pode ser inserido no processo de teste de software tradicional. O trabalho descreve o conceito de crowdsourcing e o processo de teste de software, e investiga os conceitos e aplicações do crowd testing. O objetivo é identificar como o crowd testing pode ser utilizado no controle da qualidade de software para complementar os testes tradicionais.
La conexión entre Metasonic S-BPM y LEAN es simbiótica. Hoy en día somos el único producto BPM que es integrado habitualmente en las cadenas de producción.
O documento discute o empreendedorismo, definindo-o como o estudo voltado para o desenvolvimento de competências relacionadas à criação de projetos. Brevemente descreve a história do empreendedorismo desde o século XVII e sua chegada ao Brasil nos anos 90. Explica também a importância do empreendedorismo para a geração de riqueza e crescimento econômico de um país.
Gastos com instalações de ar condicionado e aquisição de fórmula para novo remédio são classificados como ativos intangíveis. As questões tratam da classificação correta de itens nos balanços patrimoniais e demonstrações de resultado de acordo com os princípios contábeis.
Iquitos is the largest city in the Peruvian Amazon region, located in the Loreto Department in northeastern Peru. It has a population of over 450,000 people and can only be reached by river or air as there are no roads connecting it to other cities. Iquitos is a popular tourist destination known for its tropical climate and proximity to the Amazon rainforest, with visitors coming to experience the natural beauty and biodiversity of the region through activities like jungle trekking and riverboat tours.
Yahoo.com.ar es un sitio web que ofrece servicios de correo electrónico, noticias, entretenimiento y más. Brinda a los usuarios en Argentina acceso a su correo electrónico gratuito, así como a contenido localizado en español. El dominio .ar indica que el sitio está dirigido al público en Argentina.
Edward Murphy foi um engenheiro aeroespacial norte-americano que trabalhou no Projeto Apollo e no helicóptero Apache. Ele é conhecido por ter formulado a "Lei de Murphy" em 1949, que diz que "se alguma coisa pode dar errado, dará". A lei de Murphy descreve o fatalismo de que eventos ruins são inevitáveis e que forças além do nosso controle gostam de nos pregar peças.
El documento presenta una serie de frases cortas y aparentemente inconexas que tratan sobre la importancia de las cosas en la vida frente a las que nos importan, la evolución del lenguaje, la relación entre libros y dolor de espalda, la similitud entre niños y dispositivos electrónicos, la oferta de libros gratuitos y la relación entre enseñar, aprender y resistir, concluyendo con el mandamiento de mojarse.
Presentasi ini dipersembahkan untuk kelas IX yang disukai penulis. Penulis meminta maaf kepada teman seperjuangannya dan mengakui bahwa pekerjaan kantor tidak selalu menyenangkan. Penulis kemudian terlihat sedang berfoto untuk media sosial sebelum mengakhiri presentasinya.
O documento fornece informações sobre as instalações e edificações de uma unidade militar localizada em Lins, São Paulo. Ele lista detalhes sobre as áreas do imóvel, edifícios, alojamentos para oficiais e pra-ças, infraestrutura e instalações complementares como quadras e campos esportivos.
Coding a php ajax json application to connect a mysql db.
Sviluppare una applicazione web con php e json per accedere ad un db mysql. L'anticamera per poi realizzare app gestionali.
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
1. primi passi per iniziare
Quante volte in questi ultimi mesi abbiamo sentito parlare di AJAX?
Ho deciso di scrivere quest'articolo con l'intento di aiutare a sviluppare le prime
applicazioni AJAX a coloro che si vogliono avvicinare a questo "nuovo mondo"
ritenuto spesso essere una cosa per soli esperti.
Come premesso partiamo da zero cominciando col dire che AJAX è un acronimo e sta per
Asynchronous Javascript and XML.
AJAX non è un linguaggio di programmazione ma piuttosto la combinazione di più
tecnologie (HTML , XML, Javascript, CSS) per la realizzazione di applicazioni web più
veloci.
Il tradizionale modello web si basa sul paradigma request/response sincrono cioè il
browser fa una richiesta al web server e rimane in attesa della risposta fino alla risposta
da parte del web server che a seconda dei casi può impiegare più o meno tempo.
Mentre, come il nome stesso suggerisce, AJAX si basa su comunicazione asincrona cioè il
browser fatta la richiesta non si blocca aspettando la risposta ma permette all'utente di
continuare la navigazione aggiornando solo in seguito la pagina html con i dati restituiti
dal server.
Figura. 1
Per comunicare con il server AJAX usa Javascript ed in particolare l'oggetto
XMLHttpRequest (XHR) ciò comporta che a differenza di una comunicazione web classica
ora abbiamo un livello in più lato client che viene chiamato motore AJAX (AJAX engine)
ed è proprio questo livello che permette di non dover ricaricare sempre la pagina ad ogni
2. richiesta ma soltanto quella parte che ci interessa. Il server può rispondere inviando i
dati in formato XML che vengono quindi processati utilizzando Javascript ma questo non
è strettamente necessario.
3. Figura. 2
Questo è ciò che avviene in sintesi ora vediamo un semplice esempio di utilizzo puramente
didattico di come le cose funzionino in pratica.
Come ultima cosa ricordo che AJAX lavora lato client e che quindi possiamo lavorare lato
server con il linguaggio che più ci aggrada (Java, PHP, .Net, etc).
Io utilizzerò in seguito PHP.
Let's go.
Immaginiamo di avere un form con due campi testo.
Vogliamo che il secondo campo, dopo ogni carattere digitato nella prima casella di testo,
si valorizzi con il testo reso maiuscolo del primo.
Perciò cominciamo con lo scrivere il form con i due campi testo.
<form>
Input text: <input type="text" name="inputText" onkeyup="startRequest()">
<br>
Output text: <input type="text" name="outputText" readonly>
</form>
4. Ogni volta che digitiamo un carattere nel campo inputText viene richiamata la funzione
startRequest e da qui cominciamo a parlare di AJAX.
Per prima cosa si dichiara una variabile globale (objXmlHttpReq) per contenere il
riferimento all'oggetto XMLHttpRequest (responsabile della comunicazione AJAX con il
server).
Cominciamo col dire che qui in passato si creavano i primi problemi in quanto IE non
implementava l'oggetto XMLHttpRequest standard ma ne utilizzava uno suo e quindi
dovevamo verificare quale browser stavamo utilizzando per creare l'oggetto giusto.
Tuttavia con IE7 Microsoft ha deciso di implementare anche lei l'oggetto XMLHttpRequest
superando quindi il problema che però rimane per le versioni precedenti.
Dopo aver dichiarato la variabile objXmlHttpReq scriviamo la funzione
(createXmlHttpRequest) che ci servirà per creare l'istanza dell'oggetto XMLHttpRequest.
Questa funzione molto semplice testa se il browser che utilizziamo supporta l'oggetto
XMLHttpRequest ed in tal caso ne istanziamo uno altrimenti verifica se il browser supporta
i controlli ActiveX (ciò significa che stiamo utilizzando IE5 o IE6) e se il controllo ritorna
true verrà creata un'istanza tramite la chiamata all'oggetto equivalente implementato da
Microsoft.
Qualora anche questo non fosse il caso mostriamo un messaggio di errore e settiamo a
null la variabile objXmlHttpReq.
Listato 1
var objXmlHttpReq;
function createXMLHttpRequest()
{
if (window.XMLHttpRequest){
// codice per IE7+, Firefox, Chrome, Opera, Safari
objXmlHttpReq=new XMLHttpRequest();
} else if (window.ActiveXObject){
// codice per IE6, IE5
objXmlHttpReq=new ActiveXObject("Microsoft.XMLHTTP");
} else {
objXmlHttpReq=null;
alert("Il tuo browser non supporta XMLHTTP. Scaricati una versione più
aggiornata!");
}
}
La seconda funzione startRequest per prima cosa crea l'istanza dell'oggetto
XMLHttpRequest con la chiamata alla funzione sopra descritta.
Poi verificato che è stata effettivamente creata l'istanza dell'oggetto invia la richiesta al
server passandogli il valore del campo inputText ed infine imposta il gestore di eventi con
il nome della funzione da richiamare al verificarsi di un evento.
5. Listato 2
function startRequest()
{
createXMLHttpRequest();
if (objXmlHttpReq!=null){
objXmlHttpReq.open("GET",
"upperCase.php?inputText="+document.getElementById('inputText').value",
true);
objXmlHttpReq.send(null);
objXmlHttpReq.onreadystatechange = handleStateChange;
}
}
Quest'ultima funzione ha il compito di aggiornare il campo outputText con il valore di
ritorno dal server ma prima verifica che lo stato dell'oggetto XMLHttpRequest sia 4 (che
sta per complete).
Per completezza gli altri possibili stati sono:
0 = uninitialized
1 = loading
2 = loaded
3 = interactive
Listato 3
function handleStateChange()
{
if (objXmlHttpReq.readystate == 4){
if (objXmlHttpReq.status == 200 ){
document.getElementById('outputText').value =
objXmlHttpReq.responseText;
}
}
}
Non resta che vedere il codice lato server.
Come abbiamo detto vogliamo trasformare in maiuscolo il contenuto del campo inputText
che ci viene passato al momento della richiesta del client.
Per far ciò è sufficiente recuperare il valore passato e restituirlo convertito in maiuscolo
dalla funzione php strtoupper ed il gioco è fatto.
Listato 4 (upperCase.php)
<?php
if(isset($_GET['inputText']){
echo strtoupper($_GET['inputText']);
}
?>
6. Sarà ora sufficiente riassemblare le varie linee di codice sopra descritte per ottenere il
codice lato client del nostro esempio:
Listato 5 (text_to_upper.html)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Primo esempio di Ajax - PHP</title>
<script language="javascript">
var objXmlHttpReq;
function createXMLHttpRequest()
{
if (window.XMLHttpRequest){
// codice per IE7+, Firefox, Chrome, Opera, Safari
objXmlHttpReq = new XMLHttpRequest();
} else if (window.ActiveXObject){
// codice per IE6, IE5
objXmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
} else {
objXmlHttpReq = null;
alert("Il tuo browser non supporta XMLHTTP. Scaricati una
versione più aggiornata!");
}
}
function startRequest()
{
createXMLHttpRequest();
if (objXmlHttpReq != null){
objXmlHttpReq.open("GET",
"upperCase.php?inputText="+document.getElementById('inputText').value,
true);
objXmlHttpReq.send(null);
objXmlHttpReq.onreadystatechange = handleStateChange;
}
}
function handleStateChange()
{
if (objXmlHttpReq.readystate == 4){
if (objXmlHttpReq.status == 200 ){
document.getElementById('outputText').value =
objXmlHttpReq.responseText;
}
}
}
</script>
</head>
7. <body>
<form>
Input text: <input type="text" id="inputText"
onkeyup="startRequest()" />
<br>
Output text: <input type="text" id="outputText" readonly />
</form>
</body>
</html>
Spero di essere stato chiaro e di avervi incuriosito abbastanza da farvi utilizzare AJAX
nelle vostre prossime applicazioni.
Riferimenti
• http://www.adaptivepath.com/ideas/essays/archives/000385.php
• http://it.wikipedia.org/wiki/AJAX
• http://www.w3schools.com/ajax/ajax_intro.asp
• http://www.ibm.com/developerworks/web/library/wa-ajaxintro1.html