{"id":1561,"date":"2012-11-22T06:30:49","date_gmt":"2012-11-22T05:30:49","guid":{"rendered":"http:\/\/www.manuelmarangoni.it\/sir-bit\/?p=1561"},"modified":"2013-05-26T14:01:16","modified_gmt":"2013-05-26T13:01:16","slug":"usare-ajax-tramite-una-api-di-jquery","status":"publish","type":"post","link":"https:\/\/www.manuelmarangoni.it\/sir-bit\/1561\/usare-ajax-tramite-una-api-di-jquery\/","title":{"rendered":"Usare Ajax tramite una api di JQuery"},"content":{"rendered":"<div id=\"attachment_1568\" style=\"width: 311px\" class=\"wp-caption aligncenter\"><a class=\"lightbox\" title=\"Tramite un'api di JQuery possiamo usare l'Ajax in modo rapido e utilizzando tutte le sue funzionalit\u00e0\" href=\"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-content\/uploads\/2012\/11\/Ajax-scritta-su-fondo-azzurro.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-1568\" class=\"size-medium wp-image-1568 \" style=\"margin-bottom: 5px;\" title=\"Ajax - scritta su fondo azzurro\" src=\"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-content\/uploads\/2012\/11\/Ajax-scritta-su-fondo-azzurro-e1353100706889-301x300.jpg\" alt=\"Ajax - scritta su fondo azzurro\" width=\"301\" height=\"300\" srcset=\"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-content\/uploads\/2012\/11\/Ajax-scritta-su-fondo-azzurro-e1353100706889-301x300.jpg 301w, https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-content\/uploads\/2012\/11\/Ajax-scritta-su-fondo-azzurro-e1353100706889-150x150.jpg 150w, https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-content\/uploads\/2012\/11\/Ajax-scritta-su-fondo-azzurro-e1353100706889.jpg 600w\" sizes=\"(max-width: 301px) 100vw, 301px\" \/><\/a><p id=\"caption-attachment-1568\" class=\"wp-caption-text\">Tramite un&#8217;api di JQuery possiamo usare l&#8217;Ajax in modo rapido e utilizzando tutte le sue funzionalit\u00e0 (1)<\/p><\/div>\n<p>Ajax \u00e8 un potente strumento per gestire eventi in tempo reale nonostante l\u2019uso di linguaggi lato server come php.<br \/>\nCome sa ogni programmatore con un minimo di esperienza nel campo, il php viene interpretato da un server: quello che vediamo a schermo \u00e8 solo il risultato del processo. Non ci \u00e8 possibile, quindi, eseguire <strong>uno script php in tempo reale una volta caricata la pagina<\/strong> (per esempio, non possiamo sostituire il contenuto di un div con un elemento estratto dal database in tempo reale: dobbiamo per forza ricaricare la pagina).<\/p>\n<p>Questa operazione, per\u00f2, ci \u00e8 possibile farla appoggiandosi ad Ajax. Un\u2019infarinatura di base, completa di esempio, l\u2019abbiamo vista in un <a title=\"AJAX, PHP \u2013 Le basi di ajax: cos\u2019\u00e8 e come farlo interagire con php \u2013 Esempio completo\" href=\"https:\/\/www.manuelmarangoni.it\/sir-bit\/?p=587\">articolo precedente<\/a>.<\/p>\n<p>Esistono per\u00f2 delle soluzione alternative e pi\u00f9 moderne a quelle viste nell\u2019articolo. Jquery, per esempio, integra un&#8217;api capace di semplificarci la vita e di accedere alle funzionalit\u00e0 di Ajax in pochi passaggi.<br \/>\nIl concetto \u00e8 lo stesso del precedente, ma eseguito in un minor numero di passaggi.<\/p>\n<p>Lo script qui sotto (e che potete scaricare in formato zip) mostra <strong>un esempio molto semplice di utilizzo dell\u2019Ajax tramite l&#8217;api di Jquery<\/strong>. In breve:<br \/>\n&#8211; al click sull\u2019unico link della pagina, verr\u00e0 richiamata la funzione javascript \u201cstampa_blocchi()\u201d. Come parametro gli passiamo un ipotetico valore \u201cblocco1\u201d.<br \/>\n&#8211; tramite ajax eseguiremo il file esterno &#8220;prova.php&#8221;. Questo ricever\u00e0 il post $_POST[&#8216;tipo&#8217;] che avr\u00e0 valore &#8220;blocco1&#8221;. Il codice contenuto nel file &#8220;prova.php&#8221; viene tralasciato perch\u00e9 non necessario alla spiegazione: in ogni modo, tutto quello che sar\u00e0 eleborato in questo file sar\u00e0 poi restituito dall&#8217;ajax.<br \/>\n&#8211; il contenuto elaborato nel file &#8220;prova.php&#8221; sar\u00e0 ritornato e stampato all&#8217;interno del div con id=stampa_blocchi<\/p>\n<div style=\"float: left; width: 100%; margin-top: 60px; margin-bottom: 40px;\">\n<div style=\"float: left; width: 100px;\"><img decoding=\"async\" title=\"Usare Ajax tramite una api di JQuery\" src=\"https:\/\/www.manuelmarangoni.it\/images\/zip_logo-80x80.png\" alt=\"Usare Ajax tramite una api di JQuery\" \/><\/div>\n<div style=\"float: left; width: 350px; padding-top: 30px; font-size: 14px;\"><strong><a title=\"Usare Ajax tramite una api di JQuery\" href=\"https:\/\/www.manuelmarangoni.it\/download_script.php?idfile=31&amp;link=https:\/\/www.manuelmarangoni.it\/sir-bit\/?p=1561\" target=\"_blank\">Scarica gli script di questo articolo in formato zip<\/a><\/strong><\/div>\n<\/div>\n<p><!--more--><\/p>\n<h3 style=\"margin-top: 50px; margin-bottom: 20px; color: #c00;\">Il codice nel dettaglio<\/h3>\n<p>Il codice \u00e8 sempre pi\u00f9 comprensibile della spiegazione, per cui diamo un&#8217;occhiata nel dettaglio alla funzione <em>stampa_blocchi()<\/em>.<\/p>\n<p><script type=\"text\/javascript\">\/\/ <![CDATA[\ngoogle_ad_client = \"ca-pub-9984963620559913\"; \/* Sir Bit - post singolo rettangolare *\/ google_ad_slot = \"5334366715\"; google_ad_width = 336; google_ad_height = 280;\n\/\/ ]]><\/script><br \/>\n<script type=\"text\/javascript\" src=\"http:\/\/pagead2.googlesyndication.com\/pagead\/show_ads.js\">\/\/ <![CDATA[\n\n\n\/\/ ]]><\/script><\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1\r\n2\r\n3\r\n4\r\n5\r\n6\r\n7\r\n8\r\n9\r\n10\r\n11\r\n12\r\n13\r\n14\r\n15\r\n16\r\n17\r\n18\r\n19\r\n20<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"javascript\" style=\"font-family: monospace;\"><span style=\"color: #000066; font-weight: bold;\">function<\/span> stampa_blocchi<span style=\"color: #009900;\">(<\/span>valore<span style=\"color: #009900;\">)<\/span><span style=\"color: #009900;\">{<\/span>\r\n\r\n\t<span style=\"color: #006600; font-style: italic;\">\/\/apre prova.php e gli indica che i valori passati devono essere considerati POST<\/span>\r\n\t<span style=\"color: #000066; font-weight: bold;\">var<\/span> request<span style=\"color: #339933;\">=<\/span>$.<span style=\"color: #660066;\">ajax<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #009900;\">{<\/span>\r\n\t\turl<span style=\"color: #339933;\">:<\/span> <span style=\"color: #3366cc;\">\"prova.php\"<\/span><span style=\"color: #339933;\">,<\/span>\r\n\t\ttype<span style=\"color: #339933;\">:<\/span> <span style=\"color: #3366cc;\">\"POST\"<\/span><span style=\"color: #339933;\">,<\/span>\r\n\t\tdata<span style=\"color: #339933;\">:<\/span> <span style=\"color: #009900;\">{<\/span>tipo<span style=\"color: #339933;\">:<\/span> valore<span style=\"color: #009900;\">}<\/span><span style=\"color: #339933;\">,<\/span>\r\n\t\tdataType<span style=\"color: #339933;\">:<\/span> <span style=\"color: #3366cc;\">\"html\"<\/span>\r\n\t<span style=\"color: #009900;\">}<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\r\n\r\n\t<span style=\"color: #006600; font-style: italic;\">\/\/una volta che il file prova.php \u00e8 stato elaborato, lo stampa nell'id<\/span>\r\n\trequest.<span style=\"color: #660066;\">done<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000066; font-weight: bold;\">function<\/span><span style=\"color: #009900;\">(<\/span>msg<span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span>\r\n\t\t$<span style=\"color: #009900;\">(<\/span><span style=\"color: #3366cc;\">\"#stampa_blocchi\"<\/span><span style=\"color: #009900;\">)<\/span>.<span style=\"color: #660066;\">html<\/span><span style=\"color: #009900;\">(<\/span> msg <span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span> <span style=\"color: #006600; font-style: italic;\">\/\/<\/span>\r\n\t<span style=\"color: #009900;\">}<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\r\n\r\n\trequest.<span style=\"color: #660066;\">fail<\/span><span style=\"color: #009900;\">(<\/span><span style=\"color: #000066; font-weight: bold;\">function<\/span><span style=\"color: #009900;\">(<\/span>jqXHR<span style=\"color: #339933;\">,<\/span> textStatus<span style=\"color: #009900;\">)<\/span> <span style=\"color: #009900;\">{<\/span>\r\n\t\talert<span style=\"color: #009900;\">(<\/span> <span style=\"color: #3366cc;\">\"Request failed: \"<\/span> <span style=\"color: #339933;\">+<\/span> textStatus <span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\r\n\t<span style=\"color: #009900;\">}<\/span><span style=\"color: #009900;\">)<\/span><span style=\"color: #339933;\">;<\/span>\r\n\r\n<span style=\"color: #009900;\">}<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>La chiamata ajax sar\u00e0 immagazzinata nella variabile &#8220;request&#8221;. Se notate, \u00e8 qui che <strong>abbiamo indicato quale sar\u00e0 il file da elaborare (prova.php)<\/strong>, quali post passargli ($_POST[&#8216;tipo&#8217;]=valore) e che il risultato sar\u00e0 stampato in formato html.<br \/>\nLa seconda parte indica che, una volta elaborata la richiesta, il contenuto risultato sar\u00e0 visualizzato nell&#8217;elemento della pagina che avr\u00e0 id=&#8221;stampa_blocchi&#8221;. Nel nostro caso sar\u00e0 stampato entro:<\/p>\n<div class=\"wp_syntax\">\n<table>\n<tbody>\n<tr>\n<td class=\"line_numbers\">\n<pre>1<\/pre>\n<\/td>\n<td class=\"code\">\n<pre class=\"html4strict\" style=\"font-family: monospace;\"><span style=\"color: #009900;\">&lt;<span style=\"color: #000000; font-weight: bold;\">div<\/span> <span style=\"color: #000066;\">id<\/span><span style=\"color: #66cc66;\">=<\/span><span style=\"color: #ff0000;\">\"stampa_blocchi\"<\/span>&gt;&lt;<span style=\"color: #66cc66;\">\/<\/span><span style=\"color: #000000; font-weight: bold;\">div<\/span>&gt;<\/span><\/pre>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Niente di particolarmente complicato. Le potenzialit\u00e0 di questa api Jquery, a ogni modo, sono davvero impressionanti.<br \/>\nNella documentazione che trovate sotto avete un elenco completo dei parametri utilizzabili.<\/p>\n<div style=\"margin-top: 100px; margin-bottom: 20px;\"><strong><em>Fonti esterne<\/em><\/strong><\/div>\n<p><a title=\"a documentazione completa dell'uso di ajax tramite jquery\" href=\"http:\/\/api.jquery.com\/jQuery.ajax\/\" target=\"_blank\">La documentazione completa dell&#8217;uso di ajax tramite jquery<\/a><\/p>\n<div style=\"margin-top: 100px; margin-bottom: 20px;\"><strong><em>Copyright immagini<\/em><\/strong><\/div>\n<p>(1) http:\/\/wpmu.org\/free-ajax-wordpress-plugins\/<\/p>\n","protected":false},"excerpt":{"rendered":"<p>JQuery ci mette a disposizione una comoda api per richiamare facilmente le funzioni dell&#8217;Ajax. Tutti i parametri sono accessibili con un rapido richiamo.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[80],"tags":[41,12,11,4,6],"class_list":["post-1561","post","type-post","status-publish","format-standard","hentry","category-javascript-e-derivati","tag-ajax","tag-javascript","tag-jquery","tag-php","tag-script","cat-80-id"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts\/1561"}],"collection":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/comments?post=1561"}],"version-history":[{"count":9,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts\/1561\/revisions"}],"predecessor-version":[{"id":1877,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/posts\/1561\/revisions\/1877"}],"wp:attachment":[{"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/media?parent=1561"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/categories?post=1561"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.manuelmarangoni.it\/sir-bit\/wp-json\/wp\/v2\/tags?post=1561"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}