เรียกใช้ฟังก์ชัน JS ที่กำหนดเองใน AJAX callback หรือไม่


8

เป็นไปได้ไหมที่จะเรียกใช้ฟังก์ชัน JS ที่กำหนดเองใน AJAX callback?

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

นี่น่าจะเป็นสิ่งที่ซ้ำกันของdrupal.stackexchange.com/questions/18867/ …
ErichBSchulz

คำตอบ:


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.