AJAX 콜백에서 사용자 정의 JS 함수를 호출 하시겠습니까?


8

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);
}

그렇습니다. 또는 적어도 가능해야합니다. 특별한 문제가 있습니까?
Mołot

답변:


5

임의의 스크립트를 실행할 수는 없지만 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');

10

그렇습니다.

코드 샘플 :

$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);

3
이것도 좋은 예입니다
Rotari Radu
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.