Warning: UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache' query: UPDATE cache SET data = 'a:402:{s:13:\"theme_default\";s:4:\"kewl\";s:13:\"filter_html_1\";s:1:\"1\";s:18:\"node_options_forum\";a:1:{i:0;s:6:\"status\";}s:18:\"drupal_private_key\";s:64:\"a5de3144cabd3a5a76889cdc7d52a5656ec758dd9c66b720824755fe28d5dc59\";s:10:\"menu_masks\";a:24:{i:0;i:127;i:1;i:63;i:2;i:62;i:3;i:61;i:4;i:59;i:5;i:58;i:6;i:57;i:7;i:56;i:8;i:31;i:9;i:30;i:10;i:29;i:11;i:28;i:12;i:24;i:13;i:21;i:14;i:15;i:15;i:14;i:16;i:12;i:17;i:11;i:18;i:7;i:19;i:6;i:20;i:5;i:21;i:3;i:22;i:2;i:23;i:1;}s:12:\"install_task\";s:4:\"done\";s:13:\"menu_expanded\";a:2:{i:0;s:15:\"menu-categories\";i:1;s:10:\"navigation\";}s:9:\"site_name\";s:7:\"jide.fr\";s:9:\"site_mail\";s:17:\"jide.fr@gmail.com\";s:21:\"date_defa in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.86.47' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:3003:\"UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache_filter'\nquery: UPDATE cache_filter SET data = '<p>Il y a de nombreux exemples d\\'utilisation d\\'AJAX dans la form API, mais peu sur comment l\\'utiliser dans du simple HTML. Voici une méthode simple.</p>\\n<p>Pour créer un lien AJAX dans Drupal, nous devons d\\'abord créer un élément de menu :</p>\\n<p><code>function MYMODULE_menu() { in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.86.47' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:10381:\"UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache_views_data'\nquery: UPDATE cache_views_data SET data = 'a:3:{s:6:\\"result\\";a:123:{i:0;O:8:\\"stdClass\\":1:{s:3:\\"nid\\";s:1:\\"1\\";}i:1;O:8:\\"stdClass\\":1:{s:3:\\"nid\\";s:1:\\"3\\";}i:2;O:8:\\"stdClass\\":1:{s:3:\\"nid\\";s:1:\\"5\\";}i:3;O:8:\\"stdClass\\&quot in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.86.47' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:5900:\"UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache_views_data'\nquery: UPDATE cache_views_data SET data = 'a:4:{s:4:\\"head\\";s:0:\\"\\";s:3:\\"css\\";a:0:{}s:2:\\"js\\";a:0:{}s:6:\\"output\\";s:3320:\\"<div class=\\"view view-tagadelic view-id-tagadelic view-display-id-block_2 view-dom-id-1\\">\\n \\n \\n \\n <div class=\\"view-content\\"&gt in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.86.47' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:5886:\"UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache_block'\nquery: UPDATE cache_block SET data = 'a:2:{s:7:\\"content\\";s:3320:\\"<div class=\\"view view-tagadelic view-id-tagadelic view-display-id-block_2 view-dom-id-1\\">\\n \\n \\n \\n <div class=\\"view-content\\">\\n <div class=\\"tagadelic_views\\"><a href=\\"/francais/android\\" class=\\&q in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.86.47' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:409:\"UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache_filter'\nquery: UPDATE cache_filter SET data = '<p>Follow me : <a href=\\"http://twitter.com/jidefr\\">jidefr</a></p>\\n', created = 1516310646, expire = 1516397046, headers = '', serialized = 0 WHERE cid = '1:fb82f31c75d9dcc2908dc560fa3f9280'\";s:5:\"%file\";s:37:\"/home/jideretu/www/includes/cache.inc\";s:5:\"%li in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.86.47' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:1006:\"UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache_views_data'\nquery: UPDATE cache_views_data SET data = 'a:3:{s:6:\\"result\\";a:1:{i:0;O:8:\\"stdClass\\":3:{s:10:\\"twitter_id\\";s:18:\\"937070315510861824\\";s:12:\\"twitter_text\\";s:143:\\"RT @PhilippeCorbe: Si vous avez du mal à comprendre l\\'affaire russe, et l\\'importance de l\\'information du jour, le plaider coupable de l\\ in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.86.47' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:2339:\"UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache_views_data'\nquery: UPDATE cache_views_data SET data = 'a:4:{s:4:\\"head\\";s:0:\\"\\";s:3:\\"css\\";a:0:{}s:2:\\"js\\";a:3:{i:0;a:5:{i:0;s:38:\\"sites/default/modules/views/js/base.js\\";i:1;s:6:\\"module\\";i:2;s:6:\\"header\\";i:3;b:0;i:4;b:1;}i:1;a:5:{i:0;s:43:\\"sites/default/modules/views/js/ajax_view.js\\";i:1;s in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.86.47' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:676:\"UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache_block'\nquery: UPDATE cache_block SET data = 'a:2:{s:7:\\"subject\\";s:15:\\"Recent Comments\\";s:7:\\"content\\";s:187:\\"<div id=\\"dsq-recentcomments\\" class=\\"dsq-widget\\"><script type=\\"text/javascript\\" src=\\"http://disqus.com/forums/jide/recent_comments_widget.js?num_items=1&hide_avatars=1\\& in /home/jideretu/www/includes/database.mysql.inc on line 135
Utiliser AJAX dans Drupal 7 en dehors de la form API | jide.fr

Utiliser AJAX dans Drupal 7 en dehors de la form API

  • user warning: UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache_filter' query: UPDATE cache_filter SET data = '<p>Il y a de nombreux exemples d\'utilisation d\'AJAX dans la form API, mais peu sur comment l\'utiliser dans du simple HTML. Voici une méthode simple.</p>\n<p>Pour créer un lien AJAX dans Drupal, nous devons d\'abord créer un élément de menu :</p>\n<p><code>function MYMODULE_menu() {<br />\n $items = array();<br />\n $items[\'MYMODULE/ajax\'] = array(<br />\n \'page callback\' =&gt; \'MYMODULE_ajax_callback\',<br />\n \'access callback\' =&gt; TRUE,<br />\n \'type\' =&gt; MENU_CALLBACK,<br />\n );<br />\n $items[\'MYMODULE/ajax/%/%\'] = array(<br />\n \'page callback\' =&gt; \'MYMODULE_ajax_callback\',<br />\n \'page arguments\' =&gt; array(2, 3),<br />\n \'access callback\' =&gt; TRUE,<br />\n \'type\' =&gt; MENU_CALLBACK,<br />\n );<br />\n return $items;<br />\n}</code></p>\n<p>Puis, là ou vous souhaitez créer le lien, ajoutez les librairies :</p>\n<p><code>// Add libraries<br />\ndrupal_add_library(\'system\', \'drupal.ajax\');<br />\ndrupal_add_library(\'system\', \'jquery.form\');</code></p>\n<p>Créez ensuite un lien avec la classe \"use-ajax\" et un wrapper pour la réponse AJAX :</p>\n<p><code>// Output a link<br />\nl(t(\'AJAX\'), \'MYMODULE/ajax/nojs/\' . $some_argument, array(\'attributes\' =&gt; array(\'class\' =&gt; array(\'use-ajax\'))));<br />\n// Output a wrapper<br />\n\'&lt;div id=\"MYMODULE-wrapper\"&gt;&lt;/div&gt;\'</code></p>\n<p>Enfin, créez la fonction de callback :</p>\n<p><code>function MYMODULE_ajax_callback($type = \'ajax\', $some_argument) {<br />\n if ($type == \'ajax\') {<br />\n $commands[] = ajax_command_replace(\'#MYMODULE-wrapper\', \'Hey ! Some AJAX content !\');<br />\n $page = array(\'#type\' =&gt; \'ajax\', \'#commands\' =&gt; $commands);<br />\n ajax_deliver($page);<br />\n }<br />\n else {<br />\n $output = t(\"This is some content delivered via a page load.\");<br />\n return $output;<br />\n }<br />\n}</code></p>\n<p>Et voilà !</p>\n', created = 1516310646, expire = 1516397046, headers = '', serialized = 0 WHERE cid = '1:01539bf1e1a75a10071bf2ea0411610a' in /home/jideretu/www/includes/cache.inc on line 112.
  • user warning: UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache_views_data' query: UPDATE cache_views_data SET data = 'a:3:{s:6:\"result\";a:123:{i:0;O:8:\"stdClass\":1:{s:3:\"nid\";s:1:\"1\";}i:1;O:8:\"stdClass\":1:{s:3:\"nid\";s:1:\"3\";}i:2;O:8:\"stdClass\":1:{s:3:\"nid\";s:1:\"5\";}i:3;O:8:\"stdClass\":1:{s:3:\"nid\";s:1:\"6\";}i:4;O:8:\"stdClass\":1:{s:3:\"nid\";s:1:\"7\";}i:5;O:8:\"stdClass\":1:{s:3:\"nid\";s:1:\"8\";}i:6;O:8:\"stdClass\":1:{s:3:\"nid\";s:1:\"9\";}i:7;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"10\";}i:8;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"11\";}i:9;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"12\";}i:10;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"13\";}i:11;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"14\";}i:12;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"15\";}i:13;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"16\";}i:14;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"17\";}i:15;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"18\";}i:16;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"19\";}i:17;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"20\";}i:18;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"21\";}i:19;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"22\";}i:20;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"23\";}i:21;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"24\";}i:22;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"25\";}i:23;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"26\";}i:24;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"27\";}i:25;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"28\";}i:26;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"29\";}i:27;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"30\";}i:28;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"31\";}i:29;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"32\";}i:30;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"33\";}i:31;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"34\";}i:32;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"35\";}i:33;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"36\";}i:34;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"37\";}i:35;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"38\";}i:36;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"39\";}i:37;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"40\";}i:38;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"41\";}i:39;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"42\";}i:40;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"43\";}i:41;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"44\";}i:42;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"46\";}i:43;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"49\";}i:44;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"50\";}i:45;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"51\";}i:46;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"52\";}i:47;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"55\";}i:48;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"56\";}i:49;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"57\";}i:50;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"58\";}i:51;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"59\";}i:52;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"61\";}i:53;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"64\";}i:54;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"66\";}i:55;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"68\";}i:56;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"70\";}i:57;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"71\";}i:58;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"73\";}i:59;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"75\";}i:60;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"77\";}i:61;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"79\";}i:62;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"81\";}i:63;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"82\";}i:64;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"85\";}i:65;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"86\";}i:66;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"88\";}i:67;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"89\";}i:68;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"91\";}i:69;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"93\";}i:70;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"96\";}i:71;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"97\";}i:72;O:8:\"stdClass\":1:{s:3:\"nid\";s:2:\"99\";}i:73;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"102\";}i:74;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"103\";}i:75;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"105\";}i:76;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"107\";}i:77;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"109\";}i:78;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"112\";}i:79;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"114\";}i:80;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"115\";}i:81;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"116\";}i:82;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"117\";}i:83;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"120\";}i:84;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"122\";}i:85;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"123\";}i:86;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"125\";}i:87;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"127\";}i:88;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"129\";}i:89;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"131\";}i:90;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"133\";}i:91;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"136\";}i:92;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"137\";}i:93;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"141\";}i:94;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"143\";}i:95;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"146\";}i:96;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"148\";}i:97;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"150\";}i:98;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"152\";}i:99;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"154\";}i:100;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"156\";}i:101;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"157\";}i:102;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"160\";}i:103;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"162\";}i:104;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"164\";}i:105;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"166\";}i:106;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"168\";}i:107;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"170\";}i:108;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"172\";}i:109;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"189\";}i:110;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"191\";}i:111;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"193\";}i:112;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"195\";}i:113;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"201\";}i:114;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"202\";}i:115;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"204\";}i:116;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"206\";}i:117;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"207\";}i:118;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"210\";}i:119;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"212\";}i:120;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"214\";}i:121;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"216\";}i:122;O:8:\"stdClass\":1:{s:3:\"nid\";s:3:\"218\";}}s:10:\"total_rows\";i:123;s:5:\"pager\";a:5:{s:9:\"use_pager\";b:0;s:14:\"items_per_page\";i:0;s:7:\"element\";i:0;s:6:\"offset\";i:0;s:12:\"current_page\";i:0;}}', created = 1516310646, expire = 1516314246, headers = '', serialized = 1 WHERE cid = 'tagadelic:block_2:results:a05686bc58909a434d941cc375c8cde7' in /home/jideretu/www/includes/cache.inc on line 112.
  • user warning: UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache_views_data' query: UPDATE cache_views_data SET data = 'a:4:{s:4:\"head\";s:0:\"\";s:3:\"css\";a:0:{}s:2:\"js\";a:0:{}s:6:\"output\";s:3320:\"<div class=\"view view-tagadelic view-id-tagadelic view-display-id-block_2 view-dom-id-1\">\n \n \n \n <div class=\"view-content\">\n <div class=\"tagadelic_views\"><a href=\"/francais/android\" class=\"tagadelic level1\" rel=\"tag\">android</a> \n<a href=\"/francais/apache\" class=\"tagadelic level1\" rel=\"tag\">Apache</a> \n<a href=\"/francais/automator\" class=\"tagadelic level1\" rel=\"tag\">Automator</a> \n<a href=\"/francais/bd\" class=\"tagadelic level1\" rel=\"tag\">BD</a> \n<a href=\"/francais/bootstrap\" class=\"tagadelic level3\" rel=\"tag\">bootstrap</a> \n<a href=\"/francais/canal\" class=\"tagadelic level1\" rel=\"tag\">canal +</a> \n<a href=\"/francais/command-line\" class=\"tagadelic level1\" rel=\"tag\">Command line</a> \n<a href=\"/francais/css\" class=\"tagadelic level2\" rel=\"tag\">CSS</a> \n<a href=\"/francais/customize\" class=\"tagadelic level1\" rel=\"tag\">customize</a> \n<a href=\"/francais/drupal\" class=\"tagadelic level5\" rel=\"tag\">Drupal</a> \n<a href=\"/francais/dwmapi\" class=\"tagadelic level1\" rel=\"tag\">Dwmapi</a> \n<a href=\"/francais/facebook\" class=\"tagadelic level1\" rel=\"tag\">Facebook</a> \n<a href=\"/francais/finder\" class=\"tagadelic level1\" rel=\"tag\">Finder</a> \n<a href=\"/francais/freshy\" class=\"tagadelic level1\" rel=\"tag\">freshy</a> \n<a href=\"/francais/game\" class=\"tagadelic level1\" rel=\"tag\">game</a> \n<a href=\"/francais/git\" class=\"tagadelic level1\" rel=\"tag\">GIT</a> \n<a href=\"/francais/github\" class=\"tagadelic level1\" rel=\"tag\">github</a> \n<a href=\"/francais/grunt\" class=\"tagadelic level1\" rel=\"tag\">grunt</a> \n<a href=\"/francais/html\" class=\"tagadelic level1\" rel=\"tag\">HTML</a> \n<a href=\"/francais/javascript\" class=\"tagadelic level2\" rel=\"tag\">javascript</a> \n<a href=\"/francais/jidefr\" class=\"tagadelic level1\" rel=\"tag\">jide.fr</a> \n<a href=\"/francais/jquery-0\" class=\"tagadelic level1\" rel=\"tag\">jQuery</a> \n<a href=\"/francais/jquery-ui-0\" class=\"tagadelic level2\" rel=\"tag\">jQuery UI</a> \n<a href=\"/francais/lamp\" class=\"tagadelic level1\" rel=\"tag\">LAMP</a> \n<a href=\"/francais/le-moteur-de-recherche\" class=\"tagadelic level1\" rel=\"tag\">le moteur de recherche</a> \n<a href=\"/francais/less\" class=\"tagadelic level2\" rel=\"tag\">less</a> \n<a href=\"/francais/mac-os-x\" class=\"tagadelic level1\" rel=\"tag\">Mac OS X</a> \n<a href=\"/francais/made-in-france\" class=\"tagadelic level1\" rel=\"tag\">made in france</a> \n<a href=\"/francais/mobile\" class=\"tagadelic level1\" rel=\"tag\">mobile</a> \n<a href=\"/francais/mongo-db\" class=\"tagadelic level1\" rel=\"tag\">mongo db</a> \n<a href=\"/francais/mysql\" class=\"tagadelic level1\" rel=\"tag\">MySQL</a> \n<a href=\"/francais/nodejs\" class=\"tagadelic level1\" rel=\"tag\">nodejs</a> \n<a href=\"/francais/php\" class=\"tagadelic level2\" rel=\"tag\">PHP</a> \n<a href=\"/francais/qt\" class=\"tagadelic level1\" rel=\"tag\">Qt</a> \n<a href=\"/francais/queue-api\" class=\"tagadelic level1\" rel=\"tag\">Queue API</a> \n<a href=\"/francais/ruby\" class=\"tagadelic level1\" rel=\"tag\">Ruby</a> \n<a href=\"/francais/rules\" class=\"tagadelic level1\" rel=\"tag\">Rules</a> \n<a href=\"/francais/vagrant\" class=\"tagadelic level1\" rel=\"tag\">Vagrant</a> \n<a href=\"/francais/views-0\" class=\"tagadelic level1\" rel=\"tag\">Views</a> \n<a href=\"/francais/windows-api\" class=\"tagadelic level1\" rel=\"tag\">Windows API</a> \n<a href=\"/francais/wordpress\" class=\"tagadelic level6\" rel=\"tag\">wordpress</a> \n</div> </div>\n \n \n \n \n \n \n</div> \";}', created = 1516310646, expire = 1516314246, headers = '', serialized = 1 WHERE cid = 'tagadelic:block_2:output:19f4215458053dda7780acaf26b5d77c' in /home/jideretu/www/includes/cache.inc on line 112.
  • user warning: UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache_block' query: UPDATE cache_block SET data = 'a:2:{s:7:\"content\";s:3320:\"<div class=\"view view-tagadelic view-id-tagadelic view-display-id-block_2 view-dom-id-1\">\n \n \n \n <div class=\"view-content\">\n <div class=\"tagadelic_views\"><a href=\"/francais/android\" class=\"tagadelic level1\" rel=\"tag\">android</a> \n<a href=\"/francais/apache\" class=\"tagadelic level1\" rel=\"tag\">Apache</a> \n<a href=\"/francais/automator\" class=\"tagadelic level1\" rel=\"tag\">Automator</a> \n<a href=\"/francais/bd\" class=\"tagadelic level1\" rel=\"tag\">BD</a> \n<a href=\"/francais/bootstrap\" class=\"tagadelic level3\" rel=\"tag\">bootstrap</a> \n<a href=\"/francais/canal\" class=\"tagadelic level1\" rel=\"tag\">canal +</a> \n<a href=\"/francais/command-line\" class=\"tagadelic level1\" rel=\"tag\">Command line</a> \n<a href=\"/francais/css\" class=\"tagadelic level2\" rel=\"tag\">CSS</a> \n<a href=\"/francais/customize\" class=\"tagadelic level1\" rel=\"tag\">customize</a> \n<a href=\"/francais/drupal\" class=\"tagadelic level5\" rel=\"tag\">Drupal</a> \n<a href=\"/francais/dwmapi\" class=\"tagadelic level1\" rel=\"tag\">Dwmapi</a> \n<a href=\"/francais/facebook\" class=\"tagadelic level1\" rel=\"tag\">Facebook</a> \n<a href=\"/francais/finder\" class=\"tagadelic level1\" rel=\"tag\">Finder</a> \n<a href=\"/francais/freshy\" class=\"tagadelic level1\" rel=\"tag\">freshy</a> \n<a href=\"/francais/game\" class=\"tagadelic level1\" rel=\"tag\">game</a> \n<a href=\"/francais/git\" class=\"tagadelic level1\" rel=\"tag\">GIT</a> \n<a href=\"/francais/github\" class=\"tagadelic level1\" rel=\"tag\">github</a> \n<a href=\"/francais/grunt\" class=\"tagadelic level1\" rel=\"tag\">grunt</a> \n<a href=\"/francais/html\" class=\"tagadelic level1\" rel=\"tag\">HTML</a> \n<a href=\"/francais/javascript\" class=\"tagadelic level2\" rel=\"tag\">javascript</a> \n<a href=\"/francais/jidefr\" class=\"tagadelic level1\" rel=\"tag\">jide.fr</a> \n<a href=\"/francais/jquery-0\" class=\"tagadelic level1\" rel=\"tag\">jQuery</a> \n<a href=\"/francais/jquery-ui-0\" class=\"tagadelic level2\" rel=\"tag\">jQuery UI</a> \n<a href=\"/francais/lamp\" class=\"tagadelic level1\" rel=\"tag\">LAMP</a> \n<a href=\"/francais/le-moteur-de-recherche\" class=\"tagadelic level1\" rel=\"tag\">le moteur de recherche</a> \n<a href=\"/francais/less\" class=\"tagadelic level2\" rel=\"tag\">less</a> \n<a href=\"/francais/mac-os-x\" class=\"tagadelic level1\" rel=\"tag\">Mac OS X</a> \n<a href=\"/francais/made-in-france\" class=\"tagadelic level1\" rel=\"tag\">made in france</a> \n<a href=\"/francais/mobile\" class=\"tagadelic level1\" rel=\"tag\">mobile</a> \n<a href=\"/francais/mongo-db\" class=\"tagadelic level1\" rel=\"tag\">mongo db</a> \n<a href=\"/francais/mysql\" class=\"tagadelic level1\" rel=\"tag\">MySQL</a> \n<a href=\"/francais/nodejs\" class=\"tagadelic level1\" rel=\"tag\">nodejs</a> \n<a href=\"/francais/php\" class=\"tagadelic level2\" rel=\"tag\">PHP</a> \n<a href=\"/francais/qt\" class=\"tagadelic level1\" rel=\"tag\">Qt</a> \n<a href=\"/francais/queue-api\" class=\"tagadelic level1\" rel=\"tag\">Queue API</a> \n<a href=\"/francais/ruby\" class=\"tagadelic level1\" rel=\"tag\">Ruby</a> \n<a href=\"/francais/rules\" class=\"tagadelic level1\" rel=\"tag\">Rules</a> \n<a href=\"/francais/vagrant\" class=\"tagadelic level1\" rel=\"tag\">Vagrant</a> \n<a href=\"/francais/views-0\" class=\"tagadelic level1\" rel=\"tag\">Views</a> \n<a href=\"/francais/windows-api\" class=\"tagadelic level1\" rel=\"tag\">Windows API</a> \n<a href=\"/francais/wordpress\" class=\"tagadelic level6\" rel=\"tag\">wordpress</a> \n</div> </div>\n \n \n \n \n \n \n</div> \";s:7:\"subject\";s:4:\"Tags\";}', created = 1516310646, expire = -1, headers = '', serialized = 1 WHERE cid = 'views:tagadelic-block_2:kewl:fr:http://jide.fr/francais/utiliser-ajax-dans-drupal-7-en-dehors-de-la-form-api' in /home/jideretu/www/includes/cache.inc on line 112.
  • user warning: UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache_filter' query: UPDATE cache_filter SET data = '<p>Follow me : <a href=\"http://twitter.com/jidefr\">jidefr</a></p>\n', created = 1516310646, expire = 1516397046, headers = '', serialized = 0 WHERE cid = '1:fb82f31c75d9dcc2908dc560fa3f9280' in /home/jideretu/www/includes/cache.inc on line 112.
  • user warning: UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache_views_data' query: UPDATE cache_views_data SET data = 'a:3:{s:6:\"result\";a:1:{i:0;O:8:\"stdClass\":3:{s:10:\"twitter_id\";s:18:\"937070315510861824\";s:12:\"twitter_text\";s:143:\"RT @PhilippeCorbe: Si vous avez du mal à comprendre l\'affaire russe, et l\'importance de l\'information du jour, le plaider coupable de l\'anc…\";s:20:\"twitter_created_time\";s:10:\"1512249947\";}}s:10:\"total_rows\";N;s:5:\"pager\";a:5:{s:9:\"use_pager\";s:1:\"0\";s:14:\"items_per_page\";i:1;s:7:\"element\";i:0;s:6:\"offset\";i:0;s:12:\"current_page\";i:0;}}', created = 1516310646, expire = 1516314246, headers = '', serialized = 1 WHERE cid = 'tweets:block:results:edb266de823293cad00bd74d438dccde' in /home/jideretu/www/includes/cache.inc on line 112.
  • user warning: UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache_views_data' query: UPDATE cache_views_data SET data = 'a:4:{s:4:\"head\";s:0:\"\";s:3:\"css\";a:0:{}s:2:\"js\";a:3:{i:0;a:5:{i:0;s:38:\"sites/default/modules/views/js/base.js\";i:1;s:6:\"module\";i:2;s:6:\"header\";i:3;b:0;i:4;b:1;}i:1;a:5:{i:0;s:43:\"sites/default/modules/views/js/ajax_view.js\";i:1;s:6:\"module\";i:2;s:6:\"header\";i:3;b:0;i:4;b:1;}i:2;a:3:{i:0;a:1:{s:5:\"views\";a:2:{s:9:\"ajax_path\";s:20:\"/francais/views/ajax\";s:9:\"ajaxViews\";a:1:{i:0;a:7:{s:9:\"view_name\";s:6:\"tweets\";s:15:\"view_display_id\";s:5:\"block\";s:9:\"view_args\";s:0:\"\";s:9:\"view_path\";s:8:\"node/152\";s:14:\"view_base_path\";N;s:11:\"view_dom_id\";i:2;s:13:\"pager_element\";i:0;}}}}i:1;s:7:\"setting\";i:2;s:6:\"header\";}}s:6:\"output\";s:740:\"<div class=\"view view-tweets view-id-tweets view-display-id-block view-dom-id-2\">\n \n \n \n <div class=\"view-content\">\n <div class=\"views-row views-row-1 views-row-odd views-row-first views-row-last\">\n \n <span class=\"views-field-text\">\n <span class=\"field-content\">RT <a target=\"_blank\" rel=\"nofollow\" href=\"http://twitter.com/PhilippeCorbe\">@PhilippeCorbe</a>: Si vous avez du mal à comprendre l\'affaire russe, et l\'importance de l\'information du jour, le plaider coupable de l\'anc…</span>\n </span>\n &#8212; \n <span class=\"views-field-created-time\">\n <span class=\"field-content\">Il y a <em>6 semaines 4 jours</em></span>\n </span>\n </div>\n </div>\n \n \n \n \n \n \n</div> \";}', created = 1516310646, expire = 1516314246, headers = '', serialized = 1 WHERE cid = 'tweets:block:output:3612a25bce275b87887cbb554efa85c6' in /home/jideretu/www/includes/cache.inc on line 112.
  • user warning: UPDATE command denied to user 'jideretumysql'@'10.0.86.47' for table 'cache_block' query: UPDATE cache_block SET data = 'a:2:{s:7:\"subject\";s:15:\"Recent Comments\";s:7:\"content\";s:187:\"<div id=\"dsq-recentcomments\" class=\"dsq-widget\"><script type=\"text/javascript\" src=\"http://disqus.com/forums/jide/recent_comments_widget.js?num_items=1&amp;hide_avatars=1\"></script></div>\";}', created = 1516310646, expire = -1, headers = '', serialized = 1 WHERE cid = 'disqus:disqus_recent_comments:kewl:fr' in /home/jideretu/www/includes/cache.inc on line 112.

Il y a de nombreux exemples d'utilisation d'AJAX dans la form API, mais peu sur comment l'utiliser dans du simple HTML. Voici une méthode simple.

Pour créer un lien AJAX dans Drupal, nous devons d'abord créer un élément de menu :

function MYMODULE_menu() {
$items = array();
$items['MYMODULE/ajax'] = array(
'page callback' => 'MYMODULE_ajax_callback',
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
$items['MYMODULE/ajax/%/%'] = array(
'page callback' => 'MYMODULE_ajax_callback',
'page arguments' => array(2, 3),
'access callback' => TRUE,
'type' => MENU_CALLBACK,
);
return $items;
}

Puis, là ou vous souhaitez créer le lien, ajoutez les librairies :

// Add libraries
drupal_add_library('system', 'drupal.ajax');
drupal_add_library('system', 'jquery.form');

Créez ensuite un lien avec la classe "use-ajax" et un wrapper pour la réponse AJAX :

// Output a link
l(t('AJAX'), 'MYMODULE/ajax/nojs/' . $some_argument, array('attributes' => array('class' => array('use-ajax'))));
// Output a wrapper
'<div id="MYMODULE-wrapper"></div>'

Enfin, créez la fonction de callback :

function MYMODULE_ajax_callback($type = 'ajax', $some_argument) {
if ($type == 'ajax') {
$commands[] = ajax_command_replace('#MYMODULE-wrapper', 'Hey ! Some AJAX content !');
$page = array('#type' => 'ajax', '#commands' => $commands);
ajax_deliver($page);
}
else {
$output = t("This is some content delivered via a page load.");
return $output;
}
}

Et voilà !


Warning: INSERT command denied to user 'jideretumysql'@'10.0.86.47' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:0:\"\";s:5:\"%file\";s:37:\"/home/jideretu/www/includes/cache.inc\";s:5:\"%line\";i:112;}', 3, '', 'http://jide.fr/francais/utiliser-ajax-dans-drupal-7-en-dehors-de-la-form-api', '', '54.234.65.78', 1516310646) in /home/jideretu/www/includes/database.mysql.inc on line 135

Warning: INSERT command denied to user 'jideretumysql'@'10.0.86.47' for table 'watchdog' query: INSERT INTO watchdog (uid, type, message, variables, severity, link, location, referer, hostname, timestamp) VALUES (0, 'php', '%message in %file on line %line.', 'a:4:{s:6:\"%error\";s:12:\"user warning\";s:8:\"%message\";s:428:\"UPDATE command denied to user &#039;jideretumysql&#039;@&#039;10.0.86.47&#039; for table &#039;sessions&#039;\nquery: UPDATE sessions SET uid = 0, cache = 0, hostname = &#039;54.234.65.78&#039;, session = &#039;messages|a:1:{s:5:\\&quot;error\\&quot;;a:1:{i:0;s:68:\\&quot;user warning: in /home/jideretu/www/includes/cache.inc on line 112.\\&quot;;}}&#039;, timestamp = 1516310646 WHERE sid = &#039;ikfg30mgkhag80ttqaknmp9304&#039;\";s:5:\"%file\";s:39:\"/home/jideretu/www/includes/session.inc\";s:5:\"%line in /home/jideretu/www/includes/database.mysql.inc on line 135