Sto cercando di capire AJAX in Drupal 8.
Ho un modulo personalizzato che funziona, utilizzando AJAX per modificare il contenuto di un div quando si fa clic su un collegamento.
L'API dice:
Molti eventi diversi possono attivare le risposte Ajax, tra cui:
Fare clic su un pulsante Premere un tasto Spostare il mouse
Come faccio ad attivare lo stesso processo dell'AJAX di Drupal quando una funzione viene chiamata dall'attivazione di un evento di un oggetto JavaScript?
Oggetto JavaScript
function calledOnSomeEvent(e) {
String data = e.target.data;
// do something to call AJAX with the data
}
Il backend AJAX funziona con questo percorso:
myModule.routing.yml
myModule.myRoute:
path: '/nojs/myFunction/{myParameter}'
defaults:
_controller: '\Drupal\myModule\MyController::myFunctionCallback'
_title: 'myFunction'
requirements:
_permission: 'access content'
HTML
<a href="nojs/myFunction/testData" class="use-ajax">Click for testData!</a>
La mia comprensione è che Drupal inietta una sorta di evento quando si fa clic su quel collegamento o l'URL viene appena modificato e il controller viene attivato solo quando viene modificato l'URL.
JavaScript
(function($, Drupal) { Drupal.AjaxCommands.prototype.myFunction = function(ajax, response, status){ $('#targetDiv').html(response.data);
}
})(jQuery, Drupal);
Ho omesso il codice PHP per il controller, che crea un comando. Il comando esegue il rendering dell'output in Drupal.AjaxCommands.prototype.myFunction, che aggiorna il div.
XMLHttpRequest è l'unico modo per far interagire JavaScript con il percorso / PHP? In caso affermativo, quale percorso deve essere utilizzato?
Penso che ci potrebbe essere un modo per JavaScript interagire con il gestore AJAX di Drupal per chiamare la stessa funzione che fa clic sul collegamento modificato con "use-ajax", dal momento che viene gestito in qualche modo ...
Qualsiasi intuizione sarebbe apprezzata.
Grazie!