Gọi hàm JS tùy chỉnh trong cuộc gọi lại AJAX?


8

Có thể gọi hàm JS tùy chỉnh trong cuộc gọi lại AJAX không?

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

Vâng, đúng vậy. Hoặc ít nhất nó nên có thể. Bất kỳ vấn đề cụ thể?
Mołot

đây dường như là một bản sao của drupal.stackexchange.com/questions/18867/iêu
ErichBSchulz

Câu trả lời:


5

Bạn không thể chạy một tập lệnh tùy ý, nhưng nếu bạn có thể bọc chức năng JS của mình trong một plugin jQuery, bạn có thể sử dụng ajax_command_invokeđể có được hiệu ứng tương tự, ví dụ:

$selector = 'body';
$method = 'myJqueryPlugin';
$args = array('arg1', 'arg2');

$ajax_commands[] = ajax_command_invoke($selector, $method, $args);

Khi nó xuất hiện ở mặt trước, nó sẽ thực hiện một cái gì đó tương đương với

$('body').myJqueryPlugin('arg1', 'arg2');

10

Vâng, đúng vậy.

Mẫu mã:

$commands = array();
$commands[] = array(
    'command' => 'your_js_callback', // the name of your javascript callback
    'value1'  => 'My first value',
    'value2'  => 'My second value',
);

Mã JS:

(function($, Drupal) {
    Drupal.ajax.prototype.commands.your_js_callback = function(ajax, response, status) {
        alert(response.value1);
        alert(response.value2);
    }
})(jQuery, Drupal);

3
đây cũng là một ví dụ điển hình
Rotari Radu
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.