AJAXコールバックでカスタムJS関数を呼び出すことは可能ですか?
function MY_MODULE_ajax_callback() {
// Define a new array to hold our AJAX commands.
$ajax_commands = array();
// Create a new AJAX command that replaces the #page text with our own text.
$ajax_commands[] = [CUSTOM JS FUNCTION]
// Return our commandS
return array('#type' => 'ajax','#commands' => $commands);
}
任意のスクリプトを実行することはできませんが、JS機能をjQueryプラグインでラップできる場合は ajax_command_invoke
同じ効果を得るには、例えば.
$selector = 'body';
$method = 'myJqueryPlugin';
$args = array('arg1', 'arg2');
$ajax_commands[] = ajax_command_invoke($selector, $method, $args);
それがフロントエンドで出てくると、それは同等の何かを実行します
$('body').myJqueryPlugin('arg1', 'arg2');
はい、そうです。
コードサンプル:
$commands = array();
$commands[] = array(
'command' => 'your_js_callback', // the name of your javascript callback
'value1' => 'My first value',
'value2' => 'My second value',
);
JSコード:
(function($, Drupal) {
Drupal.ajax.prototype.commands.your_js_callback = function(ajax, response, status) {
alert(response.value1);
alert(response.value2);
}
})(jQuery, Drupal);