// inside Ajax callback function$commands=array();// set Title and body form elements using jQuery's .val().$commands[]=ajax_command_invoke('#edit-body-title','val',array('new Title'));$commands[]=ajax_command_invoke('#edit-body-und-0-value','val',array('New body Text'));// Use ajax_command_html to replace the contents of with an empty string$commands[]=ajax_command_html('#div-ajax-form','');// Hide contents of ajax formreturnarray('#type'=>'ajax','#commands'=>$commands);
Works great! But now what I really want to do is run other Javascript commands without using the .js file, ie. something like:// This doesn't work$commands[]=ajax_command_invoke('Window','alert',array('Hi there!'));// Nor does this, which is really what I'd like to accomplish without needing to wrap it in a .js file function$commands[]=ajax_command_invoke(NULL,'Drupal.ckeditorOff',array('edit-body')
Does anyone have any insight as to how I can run commands like Window.alert()or Drupal.ckeditorOff() using an Ajax command array?
$(function(){if(!Drupal.Ajax)return;
Drupal.Ajax.plugins.yourAction =function(hook, args){if(hook =='message'&& args.data.form_id =='your_form'&& args.data.status ==true){// args.data.status is true only after validation clears// Your js here}};});
(function($){
Drupal.testAjax ={// Our form
form_id: Your-Form-ID' //Yes, I tested on my extended node creation form};
Drupal.behaviors.testAjax ={
attach:function(context, settings){// We extend Drupal.ajax objects for all AJAX elements in our form for(ajax_el in settings.ajax){if(typeof Drupal.ajax[ajax_el]!='undefined'&& Drupal.ajax[ajax_el].element.form){if(Drupal.ajax[ajax_el].element.form.id === Drupal.testAjax.form_id){
Drupal.ajax[ajax_el].beforeSend = Drupal.testAjax.beforeSend;
Drupal.ajax[ajax_el].success = Drupal.testAjax.success;
Drupal.ajax[ajax_el].error = Drupal.testAjax.error;}}}}};// Disable form
Drupal.testAjax.beforeSend =function(first, second){
console.log("Before Submit");// Call Drupal parent method
Drupal.ajax.prototype.beforeSend.call(this, first, second);}
Drupal.testAjax.success =function(response, status){
console.log("On Success");// Call original method with main functionality
Drupal.ajax.prototype.success.call(this, response, status);}
Drupal.testAjax.error =function(response, uri){
console.log("Error");
Drupal.testAjax.enableForm(this.element.form);// Call original method with main functionality
Drupal.ajax.prototype.error.call(this, response, uri);}})(jQuery);
注释
http://www.jaypan.com/blog/ca
编辑:对不起,错版的Drupal。
Drupal的机构已经关闭了在改善论坛讨论:https://www.drupal.org/node/2536122
现在是时候开始新的论坛,在其他地方。Drupal的组织不关心论坛。
不管怎样,谢谢你!任何人
不管怎样,谢谢你!
还有谁?
我在寻找同样的,我
我在寻找同样的,我需要添加ajax_deliver后的js文件()返回页面。
我能够做到什么
我能做到什么,我需要ajax_command_invoke。
HTTP://api.drupal.org/api/drupal/includes--ajax.inc/function/ajax_comman ...
请你这么好心
请你会这么好心,告诉我你是怎么做到的?
在最后,我用我自己的编码阿贾克斯,但想知道'Drupal的方式“:)
寻找
寻找Drupal的解决方案太
我的解决办法
我做了一个自定义的jQuery函数调用我的功能。如果有一个更好的解决方案,随时纠正。
在我的回调函数:
在自定义JavaScript中,我创建了一个jQuery函数
这对我的作品
只是想在这里添加一个快速的注意,该解决方案为我工作很好。感谢张贴你的代码!
对于我所用,我想叫一个自定义JavaScript命令,然后做插入重建表单元素进入阿贾克斯['#包装']的正常行为。我没有使用类似于下面的代码东西在我的回调函数如下:
如果任何人有这种做法的任何反馈,这将是巨大的来信。
该解决方案帮助我
该解决方案帮助我出去呢!我想使用jQuery来修改字段值,因为我本来就不是重建一个形式。所以我完成它像这样,在不使用的.js文件和myJavascriptFunction:
你将不得不做
你将不得不做上述表示的解决方案; 无论定义其他的JavaScript要执行和使用ajax_command_invoke调用它()的执行jQuery插件功能。下面是关于我发现的有用的主题的教程:HTTP://addictedtonew.com/archives/414/creating-a-jquery-plugin-from-scra ...
------------------------------------------
了解更多:HTTP:// ryanszrama .COM /主题/的Drupal
该链接被打破:(
该链接被打破:(
这篇文章帮助我:Drupal的7 Ajax调用后执行JavaScript代码
替代
作为替代方案,你可以插入脚本标记到文档中。
$commands[] = ajax_command_append('body', '<script>alert("foo");</script>');
情况因人而异。我想做的事是这样,因为我不能依靠我的jQuery函数的定义,我需要调用的函数之后被加载。只要想到我会折腾这个在那里为别人寻找另一种方式。
对我的作品
伟大的回答,感谢张贴...
.ajaxComplete()对我的作品也是在7
该解决方案建议为Drupal 6(呼叫在Drupal 6的AHAH事件之后的函数)的7对我的作品也很好,非常简单。我已经添加了JavaScript的内联:
阿贾克斯完成
对我来说,.ajaxcomplete解雇甚至当我的表单验证未成功。解决这个问题的最好办法是写一个定制的ajax插件。
我包括在我的主动.js文件中是这样的:
你可以在你的ARGS用的console.log()的结构好好看看,然后向下钻取,所以当你需要它的代码只执行完全相同。AJAX的插件被称为ajax.js,如果你想看看。
它会工作,但实际上
它会工作,但实际上,我因为写了关于如何做到这一点在现在D7使用AJAX命令(这是做在D7的方式)的教程。一个#AJAX事件发生后调用一个函数(Drupal的7)
Drupal的机构已经关闭了在改善论坛讨论:https://www.drupal.org/node/2536122
现在是时候开始新的论坛,在其他地方。Drupal的组织不关心论坛。
这是非常好的教程。
这是非常好的教程。化险为夷。:)
Skype的ID:shashwatpurav8
$(文件
(文档)$ .ajaxStop(函数(){
//调用您的js代码
});
执行动作的Drupal阿贾克斯后
这将工作,但它增加
这将工作,但它增加了额外的开销。使用ajax_command_()系列由Drupal的提供的功能需要较少的脚本,并有较少的开销,因为它不是在每一个AJAX命令调用就像上面的代码。
Drupal的机构已经关闭了在改善论坛讨论:https://www.drupal.org/node/2536122
现在是时候开始新的论坛,在其他地方。Drupal的组织不关心论坛。
Bullseyes!
就我而言,我的工作IEF模块,我需要用更新的设置被提交函数传递回执行JS函数(答案)(没有黑客IEF模块或过程),当你犯了一个CTA到发生形式或链接阿贾克斯你可以使用drupal_add_js功能和发送任何你可能需要回浏览器作为全球响应对象的面值,无需覆盖您以前的Ajax回调。
对我来说,完美的和发展最快
对我来说,完美的和最快的解决方案
这是一个简单的解决方案,但
这是一个简单的解决方案,但要注意的代码将在网站上的每一个Ajax请求后执行 - 这可能会导致大量的开销。
Drupal的机构已经关闭了在改善论坛讨论:https://www.drupal.org/node/2536122
现在是时候开始新的论坛,在其他地方。Drupal的组织不关心论坛。
来自 https://www.drupal.org/node/1028410